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

如何在Docker部署的Airflow中配置JAVA_HOME解决PySpark任务报错

解决方案

你遇到的报错是Airflow Celery Worker容器内部未安装Java、未配置JAVA_HOME环境变量导致的,PySpark运行依赖Java环境,你使用的Airflow基础镜像neylsoncrepalde/airflow-docker:2.0.0-pymongo默认没有预装JDK,按以下步骤修改即可:

步骤1:修改docker-compose.yml中Airflow相关服务的配置

你需要给webserver、scheduler、worker、flower这4个使用airflow镜像的服务,统一做两处修改:

  • 新增JAVA_HOME环境变量
  • 调整启动命令,先安装OpenJDK再启动对应服务

举个worker服务的修改示例,其他三个服务同理调整即可:

worker:
    image: neylsoncrepalde/airflow-docker:2.0.0-pymongo
    restart: always
    depends_on:
        - scheduler
    volumes:
        - ./dags:/usr/local/airflow/dags
        - ./data:/usr/local/airflow/data
        - ../../MYSQL:/usr/local/airflow/mysql
    environment:
        - FERNET_KEY=46BKJoQYlPPOexq0OhDZnIlNepKFf87WFwLbfzqDDho=
        - EXECUTOR=Celery
        - SPARK=spark://spark:7077
        - JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 # 新增JAVA_HOME配置
    command: > # 修改启动命令,先装JDK再启动worker
        bash -c "
        apt-get update && apt-get install -y openjdk-11-jdk &&
        celery worker
        "

步骤2:修正现有配置的笔误

你现有配置里有两处错误,会影响后续运行,建议同步修改:

  • 所有挂载路径里的myslq是拼写错误,统一改成mysql
  • worker服务的环境变量里SPARK = spark://spark:7077等号两边不能有空格,改成SPARK=spark://spark:7077

步骤3:重启服务生效

修改完配置后执行以下命令重启服务:

docker-compose down && docker-compose up -d

可选优化方案(避免每次启动都重装JDK)

如果觉得每次启动容器都要在线装JDK太慢,可以基于现有airflow镜像构建自定义预装JDK的镜像:

  1. 项目根目录新建Dockerfile,内容如下:
FROM neylsoncrepalde/airflow-docker:2.0.0-pymongo
USER root
RUN apt-get update && apt-get install -y openjdk-11-jdk
ENV JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
USER airflow
  1. 执行docker build -t custom-airflow:2.0.0 .构建自定义镜像
  2. 把docker-compose.yml里所有airflow服务的image字段替换为custom-airflow:2.0.0,就不需要每次启动时重装JDK了

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 20:36:06