web-dev-qa-db-ja.com

DockerのAirflow:DAGをAirflowに追加する方法は?

UbuntuのDockerで実行されるAirflowにDAGファイルを追加したいと思います。次の git repository を使用しました。これには、構成とDockerイメージへのリンクが含まれています。 docker run -d -p 8080:8080 puckel/docker-airflow webserverを実行すると、すべてが正常に機能します。しかし、DAGをAirflowに安全に追加する方法が見つかりません。または、docker run -d -p 8080:8080 puckel/docker-airflow webserver -v /root/dags:/usr/local/airflow/dagsを実行しましたが、成功しませんでした。

/config/airflow.cfgを編集して、dagを含むリポジトリにgit資格情報を追加しようとしましたが、成功しませんでした。また、このフォルダーがDockerコンテナーと共有されていることを前提として、DAGを含む/dagsにフォルダーhome/root/dagsを追加しました。しかし、成功もしません。

Docker composerファイルには、次のボリューム設定が含まれています。

webserver:
        image: puckel/docker-airflow:1.10.0-2
        ...
        volumes:
            - ./dags:/usr/local/airflow/dags 

しかし、Dockerコンテナーを実行するフォルダーの./dagsにコンテンツを追加すると、DAGがAirflowに表示されません。

Dockerで実行されているAirflowにDAGを安全に追加するにはどうすればよいですか?

6
Dendrobates

ボリュームを追加するのが正しい方法です

docker run -d -p 8080:8080 -v /path/to/dags/on/your/local/machine/:/usr/local/airflow/dags  puckel/docker-airflow webserver

完全な説明は Mark Nagelbergによる次の投稿 に記述されています

2
skibee

Dockerでエアフローをしばらく使用していますが、コードのロードとリロードはまだ少しバグがあります。私にとって最善の解決策は、新しいdagを追加したり、dagのコードを変更したりするたびに、プロジェクト全体を再起動することです(docker-compose up -d --buid)したがって、Webサーバー、スケジューラー、およびワーカーは最新です。

1
pacuna

デフォルトでは、エアフロー設定には次の行があります

dags_folder = /usr/local/airflow/dags

これは、パスがコンテナ内を参照している場合、そのフォルダからdagsをロードするようにairflowに指示します。

データベースコンテナが稼働していること、およびairflow initdbが実行されました。 Airflowは、そのメタデータデータベースを使用して、データ負荷を保存します。

Airflowスケジューラーは、私の知る限り、すべてのハートビートにdagsをロードするため、適切な実行間隔があることを確認してください。

また、airflow.cfg(秒単位):

scheduler_heartbeat_sec = 5

適切な洞察を得るために、コンテナ内の気流ログを確認することも役立つ場合があります。シェルから実行できます。

docker logs [container-id | container-name]

これがあなたの問題についての洞察をあなたに与えたことを願っています。

1
JaviOverflow

私のdocker + airflowはうまく機能しました。追加されたすべてのダグは、スムーズにテストおよび実行できます。

アプローチは次のとおりです。1。dagsフォルダーのみではなく、気流の全量を公開します。

webserver:
        image: puckel/docker-airflow:1.10.0-2
        ...
        volumes:
            - ./airflow:/usr/local/airflow
  1. エアフロー構成ファイルのdagsフォルダー構成を編集します(エアフローフォルダーの下にあるため、デフォルトでは編集する必要はありません)。
  2. 毎回、次のコマンドでdag名が表示されているかどうかを確認します。

    エアフローlist_dags

そうでない場合、plsは新しく追加されたdag pythonファイルを再確認します。上記のコマンドはdagファイルをすぐに確認できます。通常、エアフローWebは構成またはシステムのロードにより、数秒から数分遅れます。

0
Yong Wang