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

Airflow容器依赖安装失败:如何通过Docker部署安装requirements.txt

解决Airflow Docker容器中依赖包安装失败的问题

看起来你的问题核心出在Docker构建时无法正确获取requirements.txt文件,以及可能的目录挂载配置缺失,导致依赖没安装、脚本无法被DAG访问。我来一步步帮你修复:

1. 修正Dockerfile的路径问题

你的requirements.txt在项目根目录的scripts/文件夹下,而Dockerfile在deployment/目录里——这意味着构建镜像时,默认的上下文是deployment/,直接写COPY requirements.txt会找不到文件。另外,puckel/docker-airflow:1.10.9的默认工作目录是/usr/local/airflow,不需要手动改成/airflow。

修改后的Dockerfile:

FROM puckel/docker-airflow:1.10.9

# 从项目根目录复制requirements.txt到Airflow容器的工作目录
COPY ../scripts/requirements.txt /usr/local/airflow/

# 更新pip并安装依赖
RUN pip install --upgrade pip && pip install -r requirements.txt

2. 调整docker-compose的构建上下文

为了让Docker能访问到项目根目录下的scripts/和airflow/文件夹,需要把构建上下文设置为项目根目录,同时指定Dockerfile的路径。另外,别忘了挂载dags和scripts目录,这样容器内的Airflow才能访问到你的DAG文件和脚本:

修改后的docker-compose.yml:

version: '3'
services:
  webserver:
    build:
      context: ../  # 构建上下文设为项目根目录
      dockerfile: deployment/Dockerfile  # 指定Dockerfile的相对路径
    volumes:
      - ../airflow/dags:/usr/local/airflow/dags  # 挂载DAG目录
      - ../scripts:/usr/local/airflow/scripts  # 挂载脚本目录,让test.py能调用里面的函数
    ports:
      - "8080:8080"  # 按需暴露端口
    command: webserver

3. 验证依赖是否安装成功

如果还是不确定依赖是否安装,可以在Dockerfile里添加一行调试命令,查看文件是否被正确复制:

# 在COPY之后添加
RUN ls -l /usr/local/airflow/requirements.txt

构建镜像时如果能看到这个文件的输出,说明复制成功;如果报错,检查路径是否正确。

另外,你也可以进入运行中的容器,执行pip list查看boto3是否存在:

# 查找容器ID
docker ps
# 进入容器
docker exec -it <container-id> bash
# 查看已安装包
pip list | grep boto3

为什么之前的配置失败?

  • 你的Dockerfile里COPY requirements.txt /airflow,但构建上下文是deployment/,这个目录下没有requirements.txt,导致COPY命令实际没有复制到文件,pip install自然跳过了依赖安装。
  • 没有挂载scripts目录到容器,即使依赖安装成功,test.py也无法找到scripts里的函数(不过你的报错是模块找不到,所以主要还是依赖问题)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 12:12:36