Docker Compose depends_on: дождаться healthcheck базы

Категория: docker · Язык: YAML · Обновлено:

depends_on с condition: service_healthy задерживает запуск зависимого сервиса до успешного healthcheck. Это помогает приложению не подключаться к PostgreSQL, пока база ещё инициализируется.

Рабочий пример

YAML
services:
  db:
    image: postgres:16
    environment:
      POSTGRES_USER: app
      POSTGRES_PASSWORD: local-only
    healthcheck:
      test: [\"CMD-SHELL\", \"pg_isready -U app -d app\"]
      interval: 5s
      timeout: 3s
      retries: 12
  api:
    build: .
    depends_on:
      db:
        condition: service_healthy

Healthcheck проверяет готовность сервиса, а не только состояние running. Для реальной устойчивости приложение должно повторять подключение после последующей потери связи.

Частый вопрос

Гарантирует ли depends_on, что база не упадёт позже?

Нет. Условие влияет на первоначальный старт. Приложение должно переживать разрыв соединения и повторное восстановление базы.