Фишка:
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 используют просто «чтобы было», но при правильной настройке это мощный инструмент самовосстановления.