🐋 Docker-совет: используйте `HEALTHCHECK` не только для статуса, но и как скрытый «авто-рестарт триггер» для сложных сервисов.
Фишка:HEALTHCHECK может выполнять скрипт, который проверяет не только, жив ли процесс, но и корректно ли работает ваш сервис (доступ к БД, состояние очередей, ответ API, время отклика и т.п.).
Если
HEALTHCHECK начинает возвращать
EXIT 1, Docker помечает контейнер как unhealthy.
А если контейнер запущен через
--restart=always или в оркестраторе - он автоматически пересоздаётся как при аварии.
Пример:HEALTHCHECK может «ловить» зависшие соединения, мёртвые воркеры или блокировки, которые сам процесс не считает фатальными — но которые ломают приложение.
Мини-пример:
HEALTHCHECK --interval=30s --timeout=5s
CMD curl -f http://localhost:8080/health || exit 1
Зачем это нужно:
- Автоматически перезапускает контейнер при внутренних зависаниях, а не только при краше.
- Позволяет держать сервисы «самоочищающимися».
- Часто заменяет костыльные cron-перезапуски.
Обычно HEALTHCHECK используют просто «чтобы было», но при правильной настройке это мощный инструмент самовосстановления.