0
我用我的所有配置創建了一個Dockerfile
。在一個碼頭集裝箱中啓動兩臺服務器
當時我想從python server.py
,也是一個節點服務器從npm start
運行一個python的服務器因爲當docker run
執行我可以有一個CMD
或ENTRYPOINT
我怎麼能同時啓動這兩個服務器結束了嗎?
什麼是碼頭推薦的方式來處理這種情況?
我用我的所有配置創建了一個Dockerfile
。在一個碼頭集裝箱中啓動兩臺服務器
當時我想從python server.py
,也是一個節點服務器從npm start
運行一個python的服務器因爲當docker run
執行我可以有一個CMD
或ENTRYPOINT
我怎麼能同時啓動這兩個服務器結束了嗎?
什麼是碼頭推薦的方式來處理這種情況?
當您想在一個容器中運行多個進程時,您可以使用supervisord
- 如您的情況npm
和python server
。
檢查documentation for supervisord瞭解更多信息。
我只是選擇一些重要的部分。
喜歡的東西:
CentOS: `yum install supervisor`
Ubuntu: `apt-get install -y supervisor`
supervisord.conf
),以泊塢窗圖像 。COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
在你的情況supervisord.conf
應該看起來像下面的例子(未測試):
[supervisord]
nodaemon=true
[program:npm]
command=npm start
[program:python]
command=python server.py
和Dockerfile運行supervisord
爲CMD
命令:
...
# install supervisord
# copy supervisord configuration
...
# run supervisord
CMD ["/usr/bin/supervisord"]
我沒有」試試這個,但希望這會奏效。最後一個問題,我可以從我的git倉庫下載這個'supervisord.conf'文件嗎?那麼我還必須運行這個'COPY supervisord.conf/etc/supervisor/conf.d/supervisord.conf'嗎? – DilumN
@DumumN當然。在大多數情況下,'supervisord.conf'和'Dockerfile'一起,所以你可以像這個例子中那樣'複製'它。是的,你必須把'supervisord.conf'放到'/ etc/supervisor/conf.d/supervisord.conf'中,因爲CMD [「/ usr/bin/supervisord」]'會在容器啓動時使用這個'conf'文件。 – VladoDemcak