我想使用Supervisor
在Docker
容器中运行多个进程,described here, in Docker docs。
它有效,但是文档没有说明当我开始崩溃的其中一个进程时会发生什么。
遵循docker行为逻辑 - 当进程崩溃时 - 容器应该停止,可能以后可能会由Docker根据重启策略重新启动。
但它不会发生,如果我开始退出的一个(或全部)应用程序 - 容器继续工作。
如果其中一个监控进程退出/崩溃,我怎么能告诉Supervisor以这种方式退出(并以这种方式停止容器,因为我在nodaemon=true
模式下运行)?
答案 0 :(得分:0)
如果您想在流程停止时退出容器,请不要使用主管(或任何其他流程管理器)。只需直接在容器中运行该过程。
但更重要的是:不要在容器中运行多个关键应用程序。 Docker容器的黄金法则不是每个容器1个进程,而是每个容器1个问题。这样,当1个问题(应用程序)退出时,您的容器可以正常关闭。
即使在您引用的示例中,它们也没有运行2个关键进程。他们正在运行1个应用程序进程,然后在同一个容器中托管sshd以进行ssh访问。如果sshd停止,那可能不是什么大问题。如果apache服务器停止......好吧,他们正在使用supervisor来处理它并自动重启它。获取您想要的内容,将您的问题分成多个容器,然后直接在容器中运行该应用程序。
答案 1 :(得分:0)