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

Docker容器中Apache Airflow镜像安装h2o失败问题求助

问题排查与修复方案

核心问题

  1. 你定义了x-airflow-common扩展字段,但所有Airflow服务(webserver/scheduler/worker/init/flower)都没有引用继承该配置,导致其中写的build: ./airflow完全未生效。
  2. 所有Airflow服务都显式指定了官方镜像image: ${AIRFLOW_IMAGE_NAME:-apache/airflow:2.1.2},Docker Compose会优先使用该官方镜像,不会用到你本地构建的带h2o依赖的自定义镜像。
  3. 你在apt中安装的h2o是Linux平台的HTTP服务器软件,不是Python机器学习库h2o,属于无效安装;且h2o运行依赖Java环境,你当前的镜像缺少该依赖,就算pip安装成功也无法正常运行。
  4. 你将h2o写入了根目录的requirements.txt,但Dockerfile中没有加载该文件的逻辑,依赖不会自动安装。

具体修复步骤

1. 修正Dockerfile

更新airflow/Dockerfile内容,安装正确的依赖:

FROM apache/airflow:2.1.2
USER root
RUN apt-get update \
  && apt-get install -y --no-install-recommends \
         build-essential openjdk-11-jre-headless \
  && apt-get autoremove -yqq --purge \
  && apt-get clean \
  && rm -rf /var/lib/apt/lists/*
USER airflow
# 复制根目录的requirements.txt到镜像中
COPY ../requirements.txt .
RUN pip install --no-cache-dir --user -r requirements.txt

2. 修正docker-compose.yaml

两种修改方式二选一即可:

  • 简洁方案:给每个Airflow服务添加公共配置继承,删除重复配置
    给airflow-webserver、airflow-scheduler、airflow-worker、airflow-init、flower五个服务的配置开头添加<<: *x-airflow-common,同时删除这些服务中重复的image、environment、volumes、user、depends_on字段。
  • 最小改动方案:直接在每个Airflow服务中添加build配置,删除image字段
    给上述五个服务添加build: ./airflow字段,同时删除原来的image: ${AIRFLOW_IMAGE_NAME:-apache/airflow:2.1.2}字段。

3. 重新构建启动服务

执行以下命令清除旧容器缓存,重新构建启动:

docker-compose down -v
docker-compose build --no-cache
docker-compose up -d

4. 验证安装

进入任意Airflow服务容器验证h2o是否安装成功:

docker exec -it <容器ID> pip list | grep h2o

完成上述操作后,Airflow运行环境就已经配置好h2o依赖,不会再报模块缺失错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 21:27:04