Docker Compose depends_on: дождаться healthcheck базы
depends_on с condition: service_healthy задерживает запуск зависимого сервиса до успешного healthcheck. Это помогает приложению не подключаться к PostgreSQL, пока база ещё инициализируется.
Рабочий пример
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_healthyHealthcheck проверяет готовность сервиса, а не только состояние running. Для реальной устойчивости приложение должно повторять подключение после последующей потери связи.
Частый вопрос
Гарантирует ли depends_on, что база не упадёт позже?
Нет. Условие влияет на первоначальный старт. Приложение должно переживать разрыв соединения и повторное восстановление базы.