Docker Compose: Healthcheck для PostgreSQL-ждём pg_isready перед стартом сервиса

Мини-пример docker-compose.yml, где healthcheck оценивает готовность PostgreSQL через pg_isready. Избавьтесь от race-condition и «Connection refused».

**Как это работает**
pg_isready выходит с 0, если сервер готов. Пока healthcheck не успешен, статус контейнера starting; backend не запустится, пока БД не перейдёт в healthy. Решает классическую проблему «поднялся раньше, чем PostgreSQL».
# docker-compose.yml
version: "3.9"

services:
  db:
    image: postgres:16
    ports:
      - "5432:5432"
    environment:
      POSTGRES_USER: app
      POSTGRES_PASSWORD: secret
      POSTGRES_DB: app_db
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U app -d app_db"]
      interval: 10s       # проверять каждые 10 секунд
      timeout: 5s
      retries: 5
      start_period: 5s

  backend:
    build: .
    depends_on:
      db:
        condition: service_healthy   # ждём, пока БД станет «healthy»