You need to enable JavaScript to run this app. Docker部署puckel版Airflow 已装Google依赖仍报缺少google模块错误
优惠活动
大模型
产品
解决方案
定价
更多

Docker部署puckel版Airflow 已装Google依赖仍报缺少google模块错误

Airflow 容器报错"No module named 'google'"修复方案

触发问题的核心根因

  • 构建参数被覆盖失效:执行docker build时重复传递同名--build-arg参数,Docker规则为同名参数仅最后一次传递的值生效,前面传入的httplib2==0.18.1依赖会被后续传入的apache-airflow-providers-google==2.2.0完全覆盖,实际安装时第一个PYTHON_DEPS参数的内容根本不会生效。
  • 依赖安装逻辑缺失:Dockerfile中虽然写了COPY requirements.txt /requirements.txt,但整个构建流程没有执行pip install -r /requirements.txt的命令,requirements.txt中列出的所有依赖没有被安装到容器内部。
  • 镜像引用不匹配:构建时给镜像打的标签为puckel/docker-airflow(默认latest标签),但docker-compose中webserver服务配置引用的是puckel/docker-airflow:1.10.9标签,实际启动时会拉取公共仓库的原始旧版puckel镜像,完全没有用到本地新构建的带依赖的镜像。
  • 包名选择错误:google==3.0.0是PyPI上一个完全无关的同名老旧包,并非Google Cloud SDK对应的google-cloud-*系列依赖,即使安装该包也无法提供google模块的导入路径。
  • 挂载逻辑冗余:docker-compose中将本地./requirements.txt直接挂载到容器的/requirements.txt路径,覆盖了镜像构建时COPY进去的文件,但由于本身没有执行安装步骤,该挂载完全无法生效。

分步修复操作

1. 调整Dockerfile安装逻辑

在原有pip安装的RUN命令块中,新增requirements.txt的安装步骤,位置放在PYTHON_DEPS安装逻辑之后,保持在root用户权限下执行,避免权限不足报错:

# 原有RUN块中追加安装逻辑
&& if [ -n "${PYTHON_DEPS}" ]; then pip install ${PYTHON_DEPS}; fi \
&& pip install -r /requirements.txt \

2. 修正requirements.txt内容

删除无效的google==3.0.0依赖,保留实际需要的安装项:

httplib2==0.18.1
pandas==1.2.4
apache-airflow-providers-google==2.2.0

3. 修正镜像构建命令

去掉重复的同名build参数,将所有需要的依赖合并到同一个参数值中,多依赖用空格分隔:

docker build --rm \
  --build-arg AIRFLOW_DEPS="google" \
  --build-arg PYTHON_DEPS="httplib2==0.18.1 apache-airflow-providers-google==2.2.0" \
  -t puckel/docker-airflow:1.10.14 .

注意:Docker的--build-arg同个参数不要重复书写,否则只有最后一次传入的值会生效,多依赖用空格分隔放在同一个参数值内即可。

4. 调整docker-compose配置

  • 将webserver服务的image值修改为本地新构建的镜像标签,避免拉取公共旧镜像
  • 删除多余的requirements.txt挂载行,因为依赖已经在镜像构建阶段安装完成,不需要额外挂载本地文件
    调整后的webserver核心配置示例:
webserver:
    image: puckel/docker-airflow:1.10.14
    restart: always
    depends_on:
        - postgres
    environment:
        - LOAD_EX=n
        - EXECUTOR=Local
    volumes:
        - ./dags:/usr/local/airflow/dags
    ports:
        - "8080:8080"

5. 结果验证

容器启动后,进入webserver容器执行依赖检查命令,确认google相关包安装成功:

docker exec -it <webserver容器实际名称> pip list | grep google

输出中能看到google-api-core、google-auth、apache-airflow-providers-google等包信息,即代表依赖安装正常,原有Broken DAG报错会自动消失。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.25 03:54:03