如何修改Docker部署的Apache Airflow的DAG目录?
迁移Docker版Apache Airflow的DAG目录到自定义位置
推荐方法:修改docker-compose挂载配置
Docker部署Airflow时,完全不用碰容器内的airflow.cfg——官方本来就推荐用卷挂载来管理DAG、日志这类文件,毕竟容器重启后内部配置容易重置。按下面步骤操作:
- 先停掉正在运行的Airflow容器:
docker-compose down - 打开你的
docker-compose.yaml文件,找到volumes区块里的DAG挂载项,原配置大概是这样:
把本地路径改成目标位置volumes: - ~/airflow/dags:/opt/airflow/dags~/src/dags:volumes: - ~/src/dags:/opt/airflow/dags - 将旧DAG目录下的所有文件复制到新目录:
cp -r ~/airflow/dags/* ~/src/dags/ - 重新启动Airflow容器:
docker-compose up -d
备选方案:用环境变量指定DAG目录
如果你想通过配置变量调整,可在docker-compose.yaml中添加环境变量定义容器内的DAG路径,再将本地新目录挂载到该路径:
- 先停止容器:
docker-compose down - 在
airflow-webserver、airflow-scheduler、airflow-worker等服务的配置中,添加环境变量并更新挂载项:services: airflow-webserver: environment: - AIRFLOW__CORE__DAGS_FOLDER=/opt/airflow/custom_dags volumes: - ~/src/dags:/opt/airflow/custom_dags # scheduler和worker服务需要同步添加相同的环境变量和挂载配置 - 复制DAG文件到新目录后,重启容器即可。
为什么本地找不到airflow.cfg?
Docker部署的Airflow中,airflow.cfg默认存放在容器内部的/opt/airflow目录(Airflow默认的HOME路径)。如果你的docker-compose.yaml没有将容器的/opt/airflow目录挂载到本地~/airflow,自然在本地看不到这个文件。
如果非要编辑本地的airflow.cfg,可以在volumes中添加一行挂载配置:
volumes: - ~/airflow:/opt/airflow
重启容器后,本地~/airflow目录就会生成airflow.cfg,但这种方式不如单独挂载DAG目录灵活,官方也不推荐直接修改该文件。
内容的提问来源于stack exchange,提问作者motam79
相关产品推荐
相关产品推荐

