Apache Airflow Docker环境下BashOperator DAG启动失败求助
问题排查与解决
核心原因
你的DAG代码里使用了datetime(2025, 4, 1)但没有导入datetime模块,Airflow在解析DAG文件时遇到语法错误,导致无法识别这个DAG,所以抛出"DAG not found"的错误。
修复步骤
- 修正DAG代码,在开头添加datetime导入:
from airflow import DAG from airflow.operators.bash import BashOperator from datetime import datetime # 新增这一行 with DAG( dag_id="bash_operator_dag", start_date=datetime(2025, 4, 1), catchup=False, tags=["test"] ) as dag: run_bash = BashOperator( task_id="run_bash", bash_command="echo chris" ) process = BashOperator( task_id="process", bash_command="echo chris" ) run_bash >> process
验证DAG文件语法:
在本地执行python chris_2.py,如果没有报错,说明语法没问题。如果有报错,根据提示修复(比如拼写错误、缺少依赖等)。检查Docker挂载权限:
确保你的DAG文件所在目录被正确挂载到Airflow容器的/opt/airflow/dags目录,且文件权限允许容器读取(可以执行chmod -R 755 ./dags调整权限)。
额外提示
Airflow的"DAG not found"错误很多时候是因为DAG文件存在语法错误,导致解析失败,而不是真的找不到文件。可以查看Airflow scheduler或webserver的日志,里面会有更详细的语法错误提示。
内容的提问来源于stack exchange,提问作者Christian van R
相关产品推荐
相关产品推荐

