Docker中的气流:如何将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,也没

我想将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
,也没有成功

我试图编辑
/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
  • 在气流配置文件中编辑dags文件夹配置(默认情况下不需要编辑,因为它位于气流文件夹下)
  • 每次,通过以下命令检查dag名称是否出现:

    空气流量表


  • 如果没有,请再次检查新添加的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