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を安全に追加するにはどうすればよいですか?
ボリュームを追加するのが正しい方法です
docker run -d -p 8080:8080 -v /path/to/dags/on/your/local/machine/:/usr/local/airflow/dags puckel/docker-airflow webserver
完全な説明は Mark Nagelbergによる次の投稿 に記述されています
Dockerでエアフローをしばらく使用していますが、コードのロードとリロードはまだ少しバグがあります。私にとって最善の解決策は、新しいdagを追加したり、dagのコードを変更したりするたびに、プロジェクト全体を再起動することです(docker-compose up -d --buid
)したがって、Webサーバー、スケジューラー、およびワーカーは最新です。
デフォルトでは、エアフロー設定には次の行があります
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]
これがあなたの問題についての洞察をあなたに与えたことを願っています。
私のdocker + airflowはうまく機能しました。追加されたすべてのダグは、スムーズにテストおよび実行できます。
アプローチは次のとおりです。1。dagsフォルダーのみではなく、気流の全量を公開します。
webserver:
image: puckel/docker-airflow:1.10.0-2
...
volumes:
- ./airflow:/usr/local/airflow
毎回、次のコマンドでdag名が表示されているかどうかを確認します。
エアフローlist_dags
そうでない場合、plsは新しく追加されたdag pythonファイルを再確認します。上記のコマンドはdagファイルをすぐに確認できます。通常、エアフローWebは構成またはシステムのロードにより、数秒から数分遅れます。