2016-07-14 82 views
4

如果在docker-compose中運行的服務返回與0不同的退出代碼,是否可以在docker-compose中重啓容器? docker-compose.yml選項restart: always不能這樣工作。有沒有辦法解決這個問題,或者這是一個服務問題,我應該尋找容器內的答案?docker-compose restart container如果服務已經死亡

我使用supervisord,但添加選項autorestart=true不起作用,即使服務崩潰,退出代碼爲255 - RUNNING_PID文件(由系統創建)未被刪除。

感謝您的回覆。

回答

2

'restart:always'將重新啓動容器,無論退出代碼如何,所以即使在容器內運行的進程的退出代碼爲'0'。我正在使用「重啓:失敗」,它完全符合你的描述。它在進程的非零退出代碼上重新啓動容器。在進程退出並且沒有重啓之後,你可以使用'docker-compose ps'檢查退出代碼。

+0

感謝您的回覆,但我的情況有點不同 - 即使服務退出的代碼不是0,容器也不會不顯示它(它仍然在docker-compose ps中標記爲Up)。 – Thomas

+0

ref https://docs.docker.com/compose/compose-file/#restart_policy –

+0

v2 ref https://docs.docker.com/compose/compose-file/compose-file-v2/#restart –