Airflow Docker容器中自定义DAG未在Web UI显示的问题求助
Airflow Docker容器中自定义DAG未在Web UI显示的问题求助
大家好,我最近在使用Docker容器部署Airflow时遇到了一个棘手的问题,想请各位帮忙排查下:
我在VS Code里操作Docker容器,把3个自定义DAG文件(example1.py、example2.py和example3.py)放在了airflow/airflow-docker/dags目录下,但Airflow的Web UI首页一直显示“no results”,完全看不到这些自定义DAG。
我的环境配置
- 通过Docker容器运行Airflow,全程用VS Code终端执行CLI命令
- 没有单独的Airflow配置文件,使用的是通过以下命令下载的官方docker-compose.yaml:
curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.10.4/docker-compose.yaml'
我已经尝试过的方法
- 在docker-compose.yaml中设置环境变量,指定DAG目录的绝对路径:
但设置后没有任何效果。AIRFLOW__CORE__DAGS_FOLDER: '/workspaces/my_dir/airflow/airflow-docker/dags' - 执行
airflow dags list命令,结果只显示了目录中自带的示例DAG,看不到我自己添加的DAG文件。
我的docker-compose.yaml中的卷配置
volumes: - ${AIRFLOW_PROJ_DIR:-.}/dags:/opt/airflow/dags - ${AIRFLOW_PROJ_DIR:-.}/logs:/opt/airflow/logs - ${AIRFLOW_PROJ_DIR:-.}/plugins:/opt/airflow/plugins
附上其中一个自定义DAG的代码示例
from datetime import datetime, timedelta from airflow import DAG from airflow.decorators import dag, task default_args = { 'owner': 'abc', 'depends_on_past': False, 'start_date': datetime(2023, 1, 1), 'email_on_failure': False, 'email_on_retry': False, 'retries': 1, 'retry_delay': timedelta(minutes=5), } @dag( 'my_example', default_args=default_args, description='A simple hello DAG', schedule_interval=None, # Disable scheduling catchup=False, ) def taskflow(): @task def say_hello(name): return(f'Yo, {name}!') ( say_hello.override(task_id='A')('A') >> say_hello.override(task_id='Z')('Z') ) taskflow()
想请教一下大家,到底应该把自定义DAG放在哪个目录,或者还需要调整什么配置,才能让Airflow自动加载这些DAG并在Web UI中显示出来呢?非常感谢!
备注:内容来源于stack exchange,提问作者Sahil Negi
相关产品推荐
相关产品推荐

