You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Docker高效开发两个依赖的Python多仓库项目?

配置Docker高效开发存在依赖关系的两个Python仓库

核心方案

通过多阶段Docker构建区分开发/生产环境,结合本地目录挂载实现开发阶段热重载,生产阶段构建完全独立的镜像,同时兼容依赖未发布时的本地迭代需求。

步骤1:编写适配双场景的Dockerfile

在runtime/Dockerfile中编写多阶段构建配置,分别适配开发和生产:

# 基础镜像(开发/生产共用)
FROM python:3.11-slim AS base
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# 开发阶段镜像
FROM base AS dev
# 安装热重载工具(示例为FastAPI用的uvicorn,可根据项目调整)
RUN pip install --no-cache-dir uvicorn[standard]
# 开启Python无缓冲输出,确保日志实时打印
ENV PYTHONUNBUFFERED=1
# 带热重载的启动命令(根据项目实际启动方式修改)
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000", "--reload"]

# 生产阶段镜像
FROM base AS prod
# 复制runtime项目代码到镜像内
COPY . .
# 依赖正式发布后,替换为官方包安装命令
# RUN pip install --no-cache-dir framework==1.0.0
# 生产环境启动命令(关闭热重载)
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]

步骤2:用Docker Compose实现开发阶段挂载

在dev目录下创建docker-compose.yml,将本地framework和runtime挂载到容器中:

version: '3.8'
services:
  runtime-dev:
    build:
      context: ./runtime
      target: dev
    volumes:
      # 挂载本地runtime代码,修改后实时同步到容器
      - ./runtime:/app
      # 挂载本地framework到容器的Python包目录,等效于pip install -e的效果
      - ./framework:/usr/local/lib/python3.11/site-packages/framework
    ports:
      - "8000:8000"
    environment:
      - PYTHONPATH=/usr/local/lib/python3.11/site-packages

注意:容器内的Python包路径需与镜像中的Python版本匹配,可通过docker exec <容器ID> python -c "import sys; print(sys.path)"确认实际路径。

步骤3:开发阶段快速迭代流程

  • 修改framework或runtime代码后,容器会自动触发热重载(前提是启动命令带--reload参数)
  • 单元测试可直接在容器内执行:docker exec -it runtime-dev python -m pytest tests/

步骤4:生产阶段构建独立镜像

当framework正式发布后,更新runtime/Dockerfile的生产阶段,添加官方包安装命令,然后执行构建:

docker build --target prod -t runtime-prod ./runtime

构建出的镜像不依赖本地目录,可直接部署到生产环境。

依赖未发布时的CI/CD临时方案(可选)

若CI/CD需要提前测试,可在流水线中先将本地framework打包为wheel包,再安装到runtime:

# CI流水线执行步骤
cd framework
python setup.py sdist bdist_wheel
cd ../runtime
pip install ../framework/dist/framework-0.1.0.tar.gz
# 构建生产镜像
docker build --target prod -t runtime-prod ./runtime

内容的提问来源于stack exchange,提问作者C. Claudio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 06:37:11