В продакшене контейнер «плохо» останавливается: docker stop тянется, внутри остаются зомби-процессы, сервис не ловит SIGTERM. Как диагностировать и починить?
Проблема PID 1: приложение запущено как PID1, не форвардит сигналы и не “reap’ит” детей. Решение — запускать с init (docker run --init / tini, dumb-init), в коде обработать SIGTERM/SIGINT (graceful shutdown), в Dockerfile указать STOPSIGNAL SIGTERM, в Compose/K8s — адекватный stop_grace_period/terminationGracePeriodSeconds. Не ставить /bin/sh -c ... как PID1 без init и не прятать процесс за оболочкой.
Библиотека собеса по DevOps
Post #949
930