如何修复:Docker 的 Apache httpd 容器意外关闭 (SIGTERM)

How to fix: Apache httpd container for Docker shuts down unexpectedly (SIGTERM)

我正在使用 httpd:alpine 容器部署在 Angular 上开发的网站,但没有使用 Node(由于生产环境中的一些限制)。我实际上是使用 this amazing guide by Andreas Lorenzen 作为基础,特别是文章末尾指定的 Dockerfile。

问题是,执行一段时间后,容器突然停止,无法自行重启。我从 'docker logs' 收到的唯一信息如下:

127.0.0.1 - - [29/Jul/2019:14:51:20 +0000] "GET / HTTP/1.1" 200 883
127.0.0.1 - - [29/Jul/2019:14:51:25 +0000] "GET / HTTP/1.1" 200 883
127.0.0.1 - - [29/Jul/2019:14:51:31 +0000] "GET / HTTP/1.1" 200 883
127.0.0.1 - - [29/Jul/2019:14:51:37 +0000] "GET / HTTP/1.1" 200 883
[Mon Jul 29 14:51:44.042754 2019] [mpm_event:notice] [pid 1:tid 139803211808072] AH00491: caught SIGTERM, shutting down

关于为什么会发生这种情况的任何想法?我试图在容器中查找 Apache 日志,但找不到任何...谢谢!

询问您的托管服务提供商。可能他们将 SIGTERM 发送到您的容器。请参阅 related answer,感谢@kdgregory

SIGTERM is used to restart Apache (provided that it's setup in init to auto-restart): http://httpd.apache.org/docs/2.2/stopping.html

已修复!

Docker文件包含健康检查命令,即:

HEALTHCHECK --interval=5s --timeout=3s CMD curl --fail http://localhost:80/ || exit 1

因此,在检查因任何原因失败后,容器就被杀死了。从 Docker 文件中删除该行,或者更好的是,指示 Docker 在容器死亡时自动重新启动容器。