Javascript 监视docker容器中的节点进程
我有一个docker compose文件,它创建了3个节点js容器和一个Nginx容器作为负载平衡的前向代理 如果节点js容器出现故障,我如何监控并重新启动它们? 传统智慧认为所有容器都应该只有一个进程。因此,在节点容器上运行systemd(或类似的)将打破这种模式 更新===--Javascript 监视docker容器中的节点进程,javascript,node.js,nginx,docker,docker-compose,Javascript,Node.js,Nginx,Docker,Docker Compose,我有一个docker compose文件,它创建了3个节点js容器和一个Nginx容器作为负载平衡的前向代理 如果节点js容器出现故障,我如何监控并重新启动它们? 传统智慧认为所有容器都应该只有一个进程。因此,在节点容器上运行systemd(或类似的)将打破这种模式 更新===-- 正如@mishunika在下文中所述,如果节点进程失败,并且退出代码正确,并且容器上有正确的重新启动策略,它将重新启动。首先,这实际上取决于node.js容器在什么情况下可能会失败,如果失败,容器可能会停止并返回退出
正如@mishunika在下文中所述,如果节点进程失败,并且退出代码正确,并且容器上有正确的重新启动策略,它将重新启动。首先,这实际上取决于node.js容器在什么情况下可能会失败,如果失败,容器可能会停止并返回退出状态代码 从docker 1.2开始,有所谓的。我假设一个失败的节点实例可能会停止容器并返回一个非零值。在这种情况下,您可以在容器级别指定故障时的策略 在compose中,您可以通过以下方式指定它:
container_name:
build: .
...
restart: on-failure
当您“失败的节点实例可能会停止容器”是100%,因为我在相关文档中找不到任何内容。如果容器中的进程退出,则容器停止,并且进程的退出状态在容器中可用。没有进程的容器是不存在的。不确定记录在哪里,这只是docker工作的基础之一。@AndrewMcLagan是的,正如dnephin所说,如果进程退出,容器就会停止。这是一件基本的事情。无论如何,正如我之前所说,这取决于你所说的“失败”是什么意思。例如,如果node.js进入无响应状态并且没有退出,则上述过程将无法工作。另外,supervisor和systemd都不会检测到这一点,但我认为nodejs这样的流行产品是不可能的。