优雅停机:从 10 秒强杀到 3 秒退出

现象:每次发版 docker stop shop-api 都要卡满 10 秒,退出码 137,同时前端出现一小段 502。按顺序点按钮,看信号到底发给了谁。

deploy@server:/srv/shop
# 宿主:Ubuntu 24.04 / Docker 27.3.1 / 时间 2026-10-04 16:10

规则只有一条:docker stop 把 SIGTERM 发给容器里的 PID 1,等 -t 秒(默认 10)后再发 SIGKILL。退出码 143 = 128+15 表示进程按默认行为被 SIGTERM 结束(没做清理),137 = 128+9 表示它撑到被强杀,0 才是应用自己走完关闭流程。

以上输出是真实 docker 命令结果的整理样本,用来观察字段含义;不同版本(含 BuildKit 开关)的打印格式会有差异。