1. 问题背景
在 Docker 环境中运行 Spring Boot 应用时,为了确保应用能够优雅关机(Graceful Shutdown),需要正确配置多个组件。错误的配置可能导致应用无法正常接收关闭信号,从而无法执行优雅关机流程。
今天才发现服务器上配置有问题没支持, 本地是没问题的。。。最后发现是配置有问题, 这里总结一下。
日志中出现INFO o.s.b.w.e.tomcat.GracefulShutdown - Commencing graceful shutdown. Waiting for active requests to complete
表示成功(我使用的是 tomcat 容器, 其他的日志内容可能不太一样)。
2. Docker 关机流程
Docker 容器的关闭过程如下:
- Docker 向容器的 1 号进程(PID 1)发送 SIGTERM 信号
- 等待
stop_grace_period
时间(默认 10 秒) - 如果进程还未退出,发送 SIGKILL 信号强制终止