PassFront
  1. PassFront
  2. База знаний
  3. Docker Compose

Как работают depends_on и healthcheck в Docker Compose?

Docker Compose

`depends_on` задаёт порядок запуска сервисов, а `healthcheck` определяет, когда сервис действительно готов принимать запросы.

Проблема

По умолчанию depends_on ждёт только старта контейнера, а не готовности приложения: база уже запущена, но ещё не принимает соединения, и приложение падает.

Решение

services:
  db:
    image: postgres:16
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres"]
      interval: 5s
      timeout: 3s
      retries: 10

  api:
    build: .
    depends_on:
      db:
        condition: service_healthy   # ждать, пока проверка здоровья пройдёт

Условия

  • service_started — контейнер запущен (по умолчанию).
  • service_healthy — проверка здоровья успешна.
  • service_completed_successfully — для одноразовых задач, например миграций.

Дополнительно

Приложению стоит самому повторять подключение с паузой: временные сбои возможны и после старта.

Коротко для собеседования

depends_on без условия ждёт только запуск. Для готовности нужен healthcheck и condition: service_healthy.

Другие вопросы раздела