使用 Docker 进行模型的封装与部署

面向模型服务的容器化规范、镜像构建与上线流程

目标

将模型服务容器化,统一镜像规范与运行参数,支持本地/测试/生产一键部署与回滚。


镜像规范


Dockerfile 示例(FastAPI + Uvicorn)

FROM python:3.10-slim
ENV TZ=Asia/Shanghai \
    PYTHONUNBUFFERED=1 \
    PIP_DISABLE_PIP_VERSION_CHECK=1 \
    PIP_NO_CACHE_DIR=1

WORKDIR /app
COPY requirements.txt ./
RUN pip install -r requirements.txt

COPY . .
EXPOSE 8000
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]

docker-compose.yml 示例

version: "3.9"
services:
  model-service:
    build: .
    image: model-service:latest
    restart: always
    environment:
      - WORKERS=4
      - LOG_LEVEL=info
    ports:
      - "8060:8000"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8000/health"]
      interval: 30s
      timeout: 3s
      retries: 3
    volumes:
      - ./models:/app/models

多环境上线流程

  1. 构建镜像:docker build -t my-registry/model-service:TAG .
  2. 推送镜像:docker push my-registry/model-service:TAG
  3. 部署更新:docker-compose pull && docker-compose up -d
  4. 健康验证:访问 /health/docs;检查日志与监控告警
  5. 回滚策略:保留上个稳定 TAG,快速 docker pull + up -d

最佳实践


常见问题(FAQ)