我正在docker容器中运行Airflow。我创建了一个单独的容器来运行Postgres服务器和Rabbitmq服务器,并使用docker网络连接这些容器-遵循这篇好的article。现在我的Airflow docker容器正在运行,并且使用docker网络连接到其他容器-到目前为止,该过程顺利进行。问题是如何在同一容器中运行
airflow webserver
、airflow scheduler
和airflow worker
。经过一些研究,我发现:建议在一个容器中运行一个服务。现在我有两个解决方案。
- 在同一个Airflow容器中运行多个服务-作为Docker的新手,我无法找到简单实现的方法。
- 创建单独的容器来运行Celery worker和Airflow scheduler-但是在airflow.cfg文件中,与Celery相关的设置如下:
broker_url ='amqp://guest: guest @ ksaprice_rabbitmq:8080 //'
,celery_result_backend = db + postgresql:// developer:user889@ksaprice_postgres:5432 / airflow
。这些设置是指已经在不同容器中运行的数据库或rabbitmq,它们不是指运行celery和scheduler的ip/url,我认为是因为celery和scheduler在airflow服务器上运行。
我的问题是:
- 关于第1点:有没有一种简单的方法可以在同一个Airflow容器中运行
airflow webserver
,airflow scheduler
和airflow worker
命令? - 关于第2点:是否有一种方法在airflow.cfg中配置airflow scheduler和airflow worker以在单独的docker容器中运行-并使用docker网络将它们链接起来?
我是Airflow和Docker的新手。