Docker中的气流:如何将DAG添加到气流?
我想将DAG文件添加到Airflow,它在Ubuntu的Docker中运行。我使用了以下内容,包括配置和docker映像的链接。当我运行docker run-d-p8080:8080 puckel/docker airflow Web服务器时,一切正常。但我找不到一种安全地将DAG添加到气流中的方法。或者,我运行了Docker中的气流:如何将DAG添加到气流?,docker,ubuntu,airflow,Docker,Ubuntu,Airflow,我想将DAG文件添加到Airflow,它在Ubuntu的Docker中运行。我使用了以下内容,包括配置和docker映像的链接。当我运行docker run-d-p8080:8080 puckel/docker airflow Web服务器时,一切正常。但我找不到一种安全地将DAG添加到气流中的方法。或者,我运行了dockerrun-d-p8080:8080 puckel/dockeraifflowswebserver-v/root/dags:/usr/local/aifflow/dags,也没
dockerrun-d-p8080:8080 puckel/dockeraifflowswebserver-v/root/dags:/usr/local/aifflow/dags
,也没有成功
我试图编辑/config/afflow.cfg
,并将git凭据添加到包含DAG的存储库中,但没有成功。另外,在home/root/dags
中添加了一个包含DAG的文件夹/dags
,假设此文件夹与Docker容器共享。但也没有成功
Docker composer文件包含以下卷设置:
webserver:
image: puckel/docker-airflow:1.10.0-2
...
volumes:
- ./dags:/usr/local/airflow/dags
但是,当我向运行Docker容器的文件夹中的/dags
添加内容时,DAG不会显示在“气流”中
当气流在Docker中运行时,如何安全地将DAG添加到气流中?默认情况下,在气流配置中,您有以下行
dags_folder = /usr/local/airflow/dags
这会告诉气流从该文件夹加载DAG,在您的情况下,路径引用位于容器内
检查数据库容器是否已启动并正在运行,以及是否执行了initdb
。气流使用该元数据数据库存储DAG is负载
据我所知,Airflow scheduler会在每个心跳时加载DAG,因此请确保有一个合适的执行间隔:
此外,在您的aiffort.cfg中(以秒为单位):
检查容器内的气流日志以获得正确的见解也可能有帮助。您可以从shell运行:
docker logs [container-id | container-name]
希望这能让您对您的问题有所了解。我在docker中使用airflow已经有一段时间了,代码的加载和重新加载仍然有点问题。对我来说,最好的解决方案是每次我添加一个新的dag或修改dag的代码只是重新启动整个项目(
docker compose up-d--buid
),这样Web服务器、调度程序和工作程序都是最新的。添加卷是正确的方法
docker run -d -p 8080:8080 -v /path/to/dags/on/your/local/machine/:/usr/local/airflow/dags puckel/docker-airflow webserver
完整的解释见我的docker+气流运行良好。添加的每个DAG都可以顺利测试和运行 这些方法是: 1.暴露整个风量,而不仅仅是dags文件夹
webserver:
image: puckel/docker-airflow:1.10.0-2
...
volumes:
- ./airflow:/usr/local/airflow
如果没有,请再次检查新添加的dag python文件。注意,上面的命令可以立即检查dag文件。由于配置或系统负载,气流网通常会延迟几秒钟到几分钟 我必须总是重新启动我的集装箱来添加新的DAG,这是应该的吗?好的。CLI:airflow list_dag可用于检查是否可以找到您的dag。如果我是对的,默认情况下,web UI将在300秒左右知道DAG。要刷新网页,您必须在web浏览器中使用页面刷新(或按F5)。
webserver:
image: puckel/docker-airflow:1.10.0-2
...
volumes:
- ./airflow:/usr/local/airflow