将Python项目通过Docker部署发布,可以实现环境一致性、快速迁移和高效运维。以下是实战部署的完整步骤,结合最佳实践整理而成:


✅ 一、项目准备

  1. 确保本地项目可运行

    • 开发完成并本地测试通过(如 Flask/FastAPI 项目能正常访问)。
    • 项目结构示例:
      myproject/
      ├── app.py
      ├── requirements.txt
      └── Dockerfile
      
  2. 生成依赖文件 requirements.txt

    # 推荐使用 pipreqs(只导出项目实际依赖)
    pip install pipreqs
    pipreqs . --encoding=utf8 --force
    
    # 或使用 pip freeze(可能包含多余包)
    pip freeze > requirements.txt
    

✅ 二、编写 Dockerfile

在项目根目录创建 Dockerfile,内容如下(以 Flask 为例):

# 使用轻量级Python镜像
FROM python:3.11-slim

# 设置工作目录
WORKDIR /app

# 复制依赖文件
COPY requirements.txt .

# 安装依赖(使用国内源加速)
RUN pip install --no-cache-dir -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/

# 复制项目代码
COPY . .

# 暴露应用端口(与代码中保持一致)
EXPOSE 5000

# 启动命令(推荐使用 gunicorn 生产部署)
CMD ["gunicorn", "--bind", "0.0.0.0:5000", "app:app"]

🔍 说明

  • 使用 slim 镜像减少体积。
  • --no-cache-dir 减少镜像大小。
  • 可替换为 uvicorn(FastAPI)或其他启动器。

✅ 三、构建 Docker 镜像

# 构建镜像,指定名称和标签
docker build -t my-python-app:v1.0 .

# 查看镜像是否生成
docker images | grep my-python-app

⚠️ 注意命令末尾的 . 表示上下文路径。


✅ 四、运行容器

# 启动容器,后台运行,端口映射
docker run -d -p 5000:5000 --name myapp my-python-app:v1.0

# 若需挂载配置或日志目录
# docker run -d -p 5000:5000 -v ./logs:/app/logs --name myapp my-python-app:v1.0

# 查看运行中的容器
docker ps

✅ 五、测试访问

  • 浏览器访问:http://localhost:5000 或服务器IP地址。
  • 查看日志:
    docker logs myapp
    

✅ 六、优化建议(进阶)

  1. 使用 .dockerignore 文件

    __pycache__
    *.pyc
    .git
    .env
    .idea
    

    避免不必要的文件被打包进镜像。

  2. 多阶段构建(减小镜像体积)

    FROM python:3.11-slim as builder
    COPY requirements.txt .
    RUN pip install --user -r requirements.txt
    
    FROM python:3.11-slim
    COPY --from=builder /root/.local /root/.local
    COPY . .
    ENV PATH=/root/.local/bin:$PATH
    CMD ["gunicorn", "--bind", "0.0.0.0:5000", "app:app"]
    
  3. 使用 Docker Compose 管理多服务
    创建 docker-compose.yml

    version: '3'
    services:
      web:
        build: .
        ports:
          - "5000:5000"
        depends_on:
          - db
      db:
        image: mysql:8.0
        environment:
          MYSQL_ROOT_PASSWORD: example
    

    启动:

    docker compose up --build
    

✅ 七、常用命令速查

功能命令
查看镜像docker images
查看容器docker ps / docker ps -a
删除镜像docker rmi 镜像ID
删除容器docker rm 容器ID
查看日志docker logs 容器名
进入容器docker exec -it 容器名 /bin/bash

✅ 总结

步骤关键点
1. 准备项目本地可运行 + 生成 requirements.txt
2. 编写 Dockerfile基础镜像 + 依赖安装 + 启动命令
3. 构建镜像docker build -t name:tag .
4. 运行容器docker run -d -p host:container --name
5. 测试验证访问服务 + 查看日志

通过以上步骤,即可完成一个标准 Python 项目的 Docker 容器化部署,适用于开发、测试、生产等各类环境。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐