Linux Labs

Контейнеры: Docker и compose / Ступень 8 из 11

docker compose: стек одним файлом

Не запущена Запускается обычно ~20 с
Выйти из урока

Шаг 5 из 7 · теория · 4 мин

Проверка здоровья

Статус Up значит, что процесс жив. Здесь — как узнать, что он ещё и отвечает.

Ключ healthcheck задаёт команду, которую Docker запускает внутри контейнера по расписанию. Код 0 — проверка прошла, несколько неудач подряд — контейнер нездоров.

yaml
    healthcheck:
      test: wget -q -O /dev/null http://localhost:8000/ || exit 1
      interval: 5s       # как часто проверять
      retries: 3         # сколько неудач подряд до unhealthy

Итог видно в docker compose ps: Up 7 seconds (healthy) или Up 15 seconds (unhealthy). localhost в проверке — сам контейнер. Нездоровый контейнер Docker не перезапускает: тот работает дальше с пометкой.

С проверкой depends_on умеет ждать здоровья соседа — condition: service_healthy под именем сервиса. Тогда up -d запускает зависимый сервис только после Healthy у соседа. Если сосед так и не стал здоровым, up -d печатает dependency failed to start: container … is unhealthy и выходит с кодом 1.

Проверь себя 1 вопрос

Проверка здоровья api три раза подряд не прошла, в ps — (unhealthy). Что Docker сделает с контейнером?

  • Остановленный контейнер был бы Exited. Нездоровый остаётся Up — с пометкой (unhealthy).

  • Политика перезапуска срабатывает, когда процесс завершился. Здесь процесс жив: в ps — Up … (unhealthy), и число перезапусков не растёт.

  • Пересоздаёт контейнеры docker compose up -d, и то после правки описания. Сам Docker нездоровый контейнер только помечает.

Проверка здоровья только ставит пометку: процесс жив, и контейнер работает дальше как Up … (unhealthy). Пометку видят ps и depends_on с condition: service_healthy.

Главное в шаге

  • healthcheck — команда внутри контейнера; итог виден в ps как (healthy) или (unhealthy).
  • Нездоровый контейнер продолжает работать: Docker его только помечает.
  • depends_on с condition: service_healthy запускает сервис после здорового соседа.
Ubuntu 24.04
Загрузка…