在不同的Docker容器中运行芹菜工人的气stream设置?

我在Docker容器中运行Airflow。 我已经创build了一个单独的容器来运行Postgres服务器和Rabbitmq服务器,使用dockernetworking连接这些容器 – 遵循这篇不错的文章 。 现在,我的气streamdocker集装箱正在运行,并使用dockernetworking连接到其他集装箱 – 到目前为止,这个过程非常顺利。 问题是如何在同一容器中运行airflow webserverairflow schedulerairflow worker 。 经过一番研究,我发现:build议在一个容器中运行一个服务。 现在我有两个解决scheme

  1. 在同一个Airflow容器中运行多个服务 – 我无法弄清楚在Docker中实现一个新的蜜蜂的简单方法。
  2. 创build单独的容器来运行Celery worker和Airflow调度器 – 但是在airflow.cfg文件中,与Celery相关的设置是: broker_url = 'amqp://guest:guest@ksaprice_rabbitmq:8080//'celery_result_backend = db+postgresql://developer:user889@ksaprice_postgres:5432/airflow 。 这些设置指的是数据库或rabbitmq已经运行不同的容器 – 他们不参考运行芹菜和调度程序的ip / url,我假设这是因为芹菜和调度程序在气stream服务器上运行。

我的问题是:

  1. 回到第1点:有没有一种简单的方法来在同一个Airflow容器中运行airflow webserverairflow schedulerairflow worker命令?
  2. 重申第2点:有没有办法在airflow.cfgconfiguration气stream调度和气stream工作在不同的docker集装箱运行 – 并使用dockernetworking链接?

我是Airflow和Docker的新宠儿。

花了很多时间后,我发现了以下答案:

  1. 对于第一个问题:要在同一个airflow_container上运行多个服务,请执行以下操作: docker exec -it airflow_container bash ,现在将CLI连接到airflow_container,然后运行airflow airflow worker 。 对airflow schedulerairflow flower重复相同的过程。 现在,您将有三个不同的CLI在同一个airflow_container上运行三个服务 – 这是我find的最简单的方法。
  2. 对于第二个问题:在这里有一些选项: 气streamcli像airflow webserver --hostname=some_host --port=some_portairflow flower --hostname=some_host --port=some_port在不同的服务器上运行它们。 但是对于airflow worker来说,没有select可以在不同的服务器上运行 – 也许还有其他一些方法可以在不同的服务器上运行worker。