2017-08-24 43 views
1

我有一個碼頭容器,具有在多個端口上運行的服務。Docker處理不會結束的進程?

當我嘗試啓動這些進程會通過我的Dockerfile中途它會導致生成過程無限期拖延的一個。

RUN /opt/webhook/webhook-linux-amd64/webhook -hooks /opt/webhook/hooks.json -verbose 

enter image description here

所以在程序運行,因爲它應該,但它從來沒有在移動。

我已經嘗試添加&到命令的結尾告訴bash並行運行的下一個步驟,但這會導致服務無法在最終圖像中運行。我也嘗試將程序的輸出重定向到/dev/null

我該如何解決這個問題?

+0

你需要看看在參考了[Dockerfile(https://docs.docker.com/engine/reference/builder/#cmd)。你只能有一個CMD語句。 – gview

回答

4

這裏有一個誤解。執行Dockerfile中的命令以在執行之前創建一個泊塢窗圖像。 Dockerfile中的一種命令是RUN,它允許您在某種意義上運行一個任意的shell命令,該命令的動作會影響正在創建的映像。因此,構建過程會一直等到命令終止。

看起來你想在圖像啓動時啓動服務。爲此,請改用CMD命令。它告訴Docker在圖像啓動時應該執行什麼。

+0

你有我的upvote,但切換到'CMD'沒有解決我的問題,所以我會離開問題打開。我更新了我的問題。 –

+1

只有一個'CMD'「插槽」。如果你把它多次(我猜)最後一個勝利。你可以編寫一個腳本來啓動你的兩個服務(用&在後臺運行第一個腳本),並將腳本作爲圖像的CMD。 – fzgregor

+0

這可能會進一步幫助您:https://docs.docker.com/engine/admin/multi-service_container/ – fzgregor