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

如何在docker-compose中为多个容器配置通用Python环境

Airflow与Jupyter容器共用Python依赖解决方案

方案1:基于同一份依赖清单构建镜像(生产环境首选)

这个方案可以保证两个容器的依赖完全一致,可复现性最高:

  • 项目根目录下存放统一的requirements.txt,所有Jupyter开发阶段安装的依赖、Airflow执行任务需要的依赖都统一写到这个文件里
  • 两个服务的Dockerfile都引入同一份依赖清单安装,注意两者的Python大版本要完全匹配:
    基于官方Airflow镜像的Dockerfile示例:
    FROM apache/airflow:2.8.0-python3.10
    COPY requirements.txt /tmp/requirements.txt
    RUN pip install --no-cache-dir -r /tmp/requirements.txt
    
    基于官方Jupyter镜像的Dockerfile示例:
    FROM jupyter/scipy-notebook:python-3.10
    COPY requirements.txt /tmp/requirements.txt
    RUN pip install --no-cache-dir -r /tmp/requirements.txt
    
  • 你也可以单独构建一个公共基础镜像,两个服务都从这个基础镜像继承,能节省重复构建的时间。

方案2:依赖卷共享(开发调试场景适用)

适合开发阶段频繁调整依赖,不想每次都重新构建镜像的场景:

  • 在docker-compose.yml中定义一个专门存储Python依赖的命名卷,两个容器都把这个卷挂载到各自的第三方包安装目录
  • 注意必须保证两个容器的Python大版本完全一致,否则会出现包兼容、无法识别的问题
  • 配置示例:
    version: '3.8'
    volumes:
      shared-python-sitepackages: # 公共依赖存储卷
    
    services:
      jupyter:
        image: jupyter/scipy-notebook:python-3.10
        volumes:
          - shared-python-sitepackages:/opt/conda/lib/python3.10/site-packages
          # 其他原有挂载配置
      airflow-worker:
        image: apache/airflow:2.8.0-python3.10
        volumes:
          - shared-python-sitepackages:/usr/local/lib/python3.10/site-packages
          # 其他原有挂载配置
    

这个方案仅适合本地开发使用,生产环境不要采用,否则会出现依赖和镜像解耦、跨环境运行不一致的问题。

方案3:Airflow直接调用Jupyter容器执行任务

如果不想统一维护依赖,也可以直接让Airflow用Jupyter的环境运行任务:

  • 给Airflow安装DockerOperator,执行任务时指定用Jupyter镜像启动容器
  • 把待执行的Python脚本、Notebook文件目录挂载到启动的Jupyter容器中,直接用Jupyter内置的Python环境运行,完全规避依赖不一致的问题。

内容的提问来源于stack exchange,提问作者joschwen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 21:54:02