我想将DAG文件添加到Airflow,该文件在Ubuntu上的Docker中运行。我使用了以下git repository,其中包含配置和指向docker image的链接。当我运行Bullet
时,一切正常。但是我找不到将DAG安全添加到Airflow的方法。或者,我运行了docker run -d -p 8080:8080 puckel/docker-airflow webserver
,也没有成功。
我试图编辑docker run -d -p 8080:8080 puckel/docker-airflow webserver -v /root/dags:/usr/local/airflow/dags
并将git凭据添加到包含dag的存储库中,但没有成功。此外,假设此文件夹与Docker容器共享,则在/config/airflow.cfg
中添加一个包含DAG的文件夹/dags
。但是也没有成功。
Docker composer文件包含以下卷设置:
home/root/dags
但是,当我在运行Docker容器的文件夹中的webserver:
image: puckel/docker-airflow:1.10.0-2
...
volumes:
- ./dags:/usr/local/airflow/dags
中添加内容时,DAG不会出现在Airflow中。
当DAG在Docker中运行时,如何安全地将DAG添加到Airflow?
答案 0 :(得分:2)
默认情况下,在气流配置中,以下行
dags_folder = /usr/local/airflow/dags
这告诉气流从该文件夹加载dag,在这种情况下,路径引用在容器内。
检查数据库容器是否已启动并正在运行,并且已执行airflow initdb
。 Airflow使用该元数据数据库来存储负载。
据我所知,Airflow调度程序会在每次心跳时加载dag,因此请确保您有适当的执行间隔:
此外,在airflow.cfg中(以秒为单位):
scheduler_heartbeat_sec = 5
检查容器内的气流日志以获取正确的见解也可能会有所帮助。您可以从Shell运行:
docker logs [container-id | container-name]
希望这对您的问题有一些见解。
答案 1 :(得分:1)
我在docker中使用气流已经有一段时间了,代码的加载和重新加载仍然有些问题。对我来说,最好的解决方案是每次我添加一个新的dag或修改dag的代码只是为了重新启动整个项目(docker-compose up -d --buid
)以便Web服务器,调度程序和工作程序都是最新的。
答案 2 :(得分:1)
添加卷是正确的方法
docker run -d -p 8080:8080 -v /path/to/dags/on/your/local/machine/:/usr/local/airflow/dags puckel/docker-airflow webserver
中有完整的说明。
答案 3 :(得分:0)
我的docker +气流运行良好。添加的每个dag都可以测试和顺利运行。
方法是: 1.暴露整个气流而不是仅暴露dags文件夹。
webserver:
image: puckel/docker-airflow:1.10.0-2
...
volumes:
- ./airflow:/usr/local/airflow
每次都要通过以下命令检查dag名称是否出现:
气流list_dags
如果没有,请仔细检查新添加的dag python文件。注意,以上命令可以立即检查dag文件。由于配置或系统负载,气流网通常会延迟几秒钟到几分钟。
祝你好运。