2016-10-23 117 views
0

我用我的所有配置創建了一個Dockerfile在一個碼頭集裝箱中啓動兩臺服務器

當時我想從python server.py ,也是一個節點服務器從npm start

運行一個python的服務器因爲當docker run執行我可以有一個CMDENTRYPOINT我怎麼能同時啓動這兩個服務器結束了嗎?

什麼是碼頭推薦的方式來處理這種情況?

回答

2

當您想在一個容器中運行多個進程時,您可以使用supervisord - 如您的情況npmpython server

檢查documentation for supervisord瞭解更多信息。

我只是選擇一些重要的部分。

  • 1,您需要安裝supervisord的搬運工圖像

喜歡的東西:

CentOS: `yum install supervisor` 

Ubuntu: `apt-get install -y supervisor` 
  • 2,複製配置supervisord(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運行supervisordCMD命令:

... 
# install supervisord 
# copy supervisord configuration 
... 
# run supervisord 
CMD ["/usr/bin/supervisord"] 
+0

我沒有」試試這個,但希望這會奏效。最後一個問題,我可以從我的git倉庫下載這個'supervisord.conf'文件嗎?那麼我還必須運行這個'COPY supervisord.conf/etc/supervisor/conf.d/supervisord.conf'嗎? – DilumN

+0

@DumumN當然。在大多數情況下,'supervisord.conf'和'Dockerfile'一起,所以你可以像這個例子中那樣'複製'它。是的,你必須把'supervisord.conf'放到'/ etc/supervisor/conf.d/supervisord.conf'中,因爲CMD [「/ usr/bin/supervisord」]'會在容器啓動時使用這個'conf'文件。 – VladoDemcak

相關問題