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

Docker部署Apache Airflow后Web服务报Broken DAG错误求修复

问题修复方案

问题根源

你使用的puckel/docker-airflow:latest是Airflow 1.x版本的镜像,但本地VS Code安装的是Airflow 2.x——两者的Python Operator导入路径存在差异:

  • Airflow 2.x写法:from airflow.operators.python import PythonOperator
  • Airflow 1.x写法:from airflow.operators.python_operator import PythonOperator

Docker容器内的Airflow 1.x无法识别2.x的导入路径,因此触发了Broken DAG错误。

修复方案二选一:

方案1:修改DAG代码适配Airflow 1.x

将DAG文件中的导入语句替换为1.x版本的格式:

# 替换原有导入行
from airflow.operators.python_operator import PythonOperator

方案2:替换为Airflow 2.x官方镜像(推荐)

puckel的镜像已停止维护,建议改用官方维护的Airflow 2.x镜像,调整你的docker-compose.yml如下:

  1. 把所有服务的image: puckel/docker-airflow:latest替换为apache/airflow:2.x.y(例如apache/airflow:2.8.0,选择稳定版本即可)
  2. 适配Airflow 2.x的默认工作目录(/opt/airflow,原镜像为/usr/local/airflow)
  3. 修正环境变量、服务依赖和命令逻辑,调整后的完整配置示例:
version: '3.8'
services:
  redis:
    image: 'redis:latest'

  postgres:
    image: postgres:14.0
    environment:
      - POSTGRES_USER=airflow
      - POSTGRES_PASSWORD=airflow
      - POSTGRES_DB=airflow
    volumes:
      - postgres-db-volume:/var/lib/postgresql/data

  webserver:
    image: apache/airflow:2.8.0
    restart: always
    depends_on:
      - postgres
      - redis
      - scheduler
    environment:
      - AIRFLOW__CORE__EXECUTOR=CeleryExecutor
      - AIRFLOW__DATABASE__SQL_ALCHEMY_CONN=postgresql+psycopg2://airflow:airflow@postgres/airflow
      - AIRFLOW__CELERY__RESULT_BACKEND=db+postgresql://airflow:airflow@postgres/airflow
      - AIRFLOW__CELERY__BROKER_URL=redis://:@redis:6379/0
      - AIRFLOW__CORE__FERNET_KEY=46BKJoQYlPPOexq0OhDZnIlNepKFf87WFwLbfzqDDho=
      - AIRFLOW__CORE__LOAD_EXAMPLES=False
    volumes:
      - ./dags:/opt/airflow/dags
      - ./logs:/opt/airflow/logs
      - ./plugins:/opt/airflow/plugins
    ports:
      - "8080:8080"
    command: webserver
    healthcheck:
      test: ["CMD-SHELL", "[ -f /opt/airflow/airflow-webserver.pid ]"]
      interval: 30s
      timeout: 30s
      retries: 3

  flower:
    image: apache/airflow:2.8.0
    restart: always
    depends_on:
      - redis
    environment:
      - AIRFLOW__CELERY__BROKER_URL=redis://:@redis:6379/0
    ports:
      - "5555:5555"
    command: celery flower

  scheduler:
    image: apache/airflow:2.8.0
    restart: always
    depends_on:
      - postgres
      - redis
    volumes:
      - ./dags:/opt/airflow/dags
      - ./logs:/opt/airflow/logs
      - ./plugins:/opt/airflow/plugins
    environment:
      - AIRFLOW__CORE__EXECUTOR=CeleryExecutor
      - AIRFLOW__DATABASE__SQL_ALCHEMY_CONN=postgresql+psycopg2://airflow:airflow@postgres/airflow
      - AIRFLOW__CELERY__RESULT_BACKEND=db+postgresql://airflow:airflow@postgres/airflow
      - AIRFLOW__CELERY__BROKER_URL=redis://:@redis:6379/0
      - AIRFLOW__CORE__FERNET_KEY=46BKJoQYlPPOexq0OhDZnIlNepKFf87WFwLbfzqDDho=
      - AIRFLOW__CORE__LOAD_EXAMPLES=False
    command: scheduler

  worker:
    image: apache/airflow:2.8.0
    restart: always
    depends_on:
      - scheduler
      - redis
    volumes:
      - ./dags:/opt/airflow/dags
      - ./logs:/opt/airflow/logs
      - ./plugins:/opt/airflow/plugins
    environment:
      - AIRFLOW__CORE__EXECUTOR=CeleryExecutor
      - AIRFLOW__DATABASE__SQL_ALCHEMY_CONN=postgresql+psycopg2://airflow:airflow@postgres/airflow
      - AIRFLOW__CELERY__RESULT_BACKEND=db+postgresql://airflow:airflow@postgres/airflow
      - AIRFLOW__CELERY__BROKER_URL=redis://:@redis:6379/0
      - AIRFLOW__CORE__FERNET_KEY=46BKJoQYlPPOexq0OhDZnIlNepKFf87WFwLbfzqDDho=
    command: celery worker

volumes:
  postgres-db-volume:

调整后执行以下命令重启服务:

# 停止现有服务
docker-compose down
# 初始化Airflow数据库(首次运行需执行)
docker-compose run --rm webserver airflow db init
# 创建管理员用户(首次运行需执行)
docker-compose run --rm webserver airflow users create --username admin --password admin --firstname Admin --lastname User --role Admin --email admin@example.com
# 启动所有服务
docker-compose up -d

注意事项

  • 方案2是长期维护的最优选择,官方镜像持续更新,功能更完善
  • 切换镜像后建议清理旧容器和卷,避免遗留配置冲突
  • 本地VS Code的Airflow版本建议与Docker内版本保持一致,减少后续代码兼容性问题

内容的提问来源于stack exchange,提问作者Sơn Bùi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 10:16:03