如果服务已经死亡,则docker-compose重新启动容器

时间:2016-07-14 14:02:07

标签: docker-compose docker-container

如果在其中运行的服务返回的退出代码不同于restart: always,是否可以在docker-compose中重启容器? docker-compose.yml选项autorestart=true不会那样工作。有没有办法解决它或这是一个服务问题,我应该在容器内寻找答案?

我使用supervisord但是添加选项255即使服务因退出代码RUNNING_PID而崩溃也不起作用 - char *replace_str(char *str, char *orig, char *rep) { static char buffer[4096]; char *p; if(!(p = strstr(str, orig))) return str; strncpy(buffer, str, p-str); buffer[p-str] = '\0'; sprintf(buffer+(p-str), "%s%s", rep, p+strlen(orig)); return buffer; } 文件(由系统创建)未被删除。

感谢您的回复。

1 个答案:

答案 0 :(得分:7)

'restart:always'将重启容器,无论退出代码如何,因此即使容器内运行的进程的退出代码为'0'。我正在使用'restart:on-failure',它完全符合您的描述。它在进程的非零退出代码上重新启动容器。在进程退出并且未重新启动后,您可以使用'docker-compose ps'检查退出代码