2017-08-02 35 views
2

我正在碼頭集裝箱中運行氣流。我創建了一個單獨的容器來運行Postgres服務器和Rabbitmq服務器,使用docker網絡連接這些容器 - 通過遵循這個不錯的article。現在我的氣流碼頭集裝箱正在運行,並使用碼頭網絡連接到其他集裝箱 - 迄今爲止流程非常流暢。問題是如何在同一個容器中運行airflow webserverairflow schedulerairflow worker。經過一些研究後,我發現:建議在一個容器中運行一項服務。現在我有兩種解決方案在不同的Docker容器中運行芹菜工人的氣流設置?

  1. 在同一個Airflow容器中運行多個服務 - 我找不到一個簡單的方法在Docker中實現一個新的蜜蜂。
  2. 創建單獨的容器以運行芹菜工作者和氣流調度程序 - 但在airflow.cfg文件中,與芹菜相關的設置爲:broker_url = 'amqp://guest:[email protected]_rabbitmq:8080//'celery_result_backend = db+postgresql://developer:[email protected]_postgres:5432/airflow。這些設置是指數據庫或rabbitmq,它們已經在運行不同的容器 - 它們不涉及運行芹菜和調度程序的ip/url,我假設它是這種方式,因爲芹菜和調度程序在氣流服務器上運行。

我的問題是:

  1. Reffering點1:有沒有一種簡單的方法來在同一氣流容器中運行airflow webserverairflow schedulerairflow worker命令?
  2. 回到第2點:airflow.cfg中有一種方法可以配置氣流調度程序和氣流工作人員在單獨的碼頭集裝箱中運行 - 並使用碼頭網絡將其鏈接起來嗎?

我是新的蜜蜂Airflow和Docker。

+1

爲什麼你不看這個網址https://hub.docker.com/r/puckel/docker-airflow/並使用這個圖像來設置整個事情? –

+0

這是否適用於python 2.7? – javed

回答

2

花費大量的時間後,我發現了以下答案:

  1. 對於第一個問題: 在同airflow_container運行多個服務做到:docker exec -it airflow_container bash,現在CLI會附着airflow_container然後運行airflow worker。對airflow schedulerairflow flower重複相同的過程。現在,您將有三個不同的CLI在同一個airflow_container上運行三個服務 - 這是我找到的最簡單的方法。
  2. 對於第二個問題:這裏有選項:airflow cliairflow webserver --hostname=some_host --port=some_portairflow flower --hostname=some_host --port=some_port在不同的服務器上運行它們。但是對於airflow worker,沒有選項可以在不同的服務器上運行 - 可能有其他方式在不同的服務器上運行worker。