一千萬個為什麽

搜索

Web應用程序的工作進程應該放在不同的容器中嗎?



我的設置基於具有PostgreSQL和Redis數據庫的Flask應用程序。另外,工作進程開始處理異步任務,例如發送電子郵件。我使用Gunicorn創建多個應用程序進程。通過Redis完成從應用程序進程到作業進程的作業。

問題是,盡管基於相同的代碼,工作進程是否應該在單獨的容器中啟動?目前我用相關位使用啟動腳本:

gunicorn --bind=0.0.0.0:8000 --workers=3 manage:app &
python -u manage.py run_worker

另外,如果它們要分離,我怎樣才能確保它們重用通用文件系統容器?此外,在使用主應用程序或工作進程調整Gunicorn時,是否應創建容器的其他實例或增加容器中的進程數量?

Related: What are the advantages of dockerizing nginx and PHP in different containers?

轉載註明原文: Web應用程序的工作進程應該放在不同的容器中嗎?

一共有 1 個回答:

我只能想到一個情況,在獨立容器中運行工作負載的開銷是合理的:如果您的設置使用docker swarm進行集群部署。這樣你將獲得所有的醫管局好處。

否則,我認為沒有理由將這些任務復雜化,特別是如果他們必須嚴格使用相同的代碼庫(這使我相信他們共享一個關註領域,可以這麽說)。它看起來很優雅,但我看不到足夠的好處

附:任何此類分裂都將迫使您管理互連並使本地開發的設置復雜化