Production-сервисы

Файл docker-compose.prod.yml собирает и публикует:

  • db - PostgreSQL 16 с volume pgdata
  • backend - FastAPI из docker/backend/Dockerfile.prod
  • frontend - production-сборку Next.js через nginx
  • docs - статическую сборку Hugo через nginx

Обязательные переменные

Минимальный набор для production:

  • POSTGRES_PASSWORD
  • JWT_SECRET
  • BASE_URL
  • DOCS_BASE_URL

SMTP-параметры настраиваются через .env.example. Если SMTP_USER пустой, отправка писем фактически уходит в dev-режим логирования только в коде email-сервиса; для production это не подходит.

Рекомендованный порядок выката

  1. Заполнить .env на основе .env.example.
  2. Поднять БД.
  3. Применить миграции в контейнере backend.
  4. Поднять backend и frontend.
  5. Опубликовать docs-site.

Пример:

docker compose -f docker-compose.prod.yml up -d db
docker compose -f docker-compose.prod.yml run --rm backend sh -lc "cd /app && alembic upgrade head"
docker compose -f docker-compose.prod.yml up -d backend frontend docs

CORS и базовые URL

  • ALLOWED_ORIGINS управляет CORS для backend
  • BASE_URL используется при генерации ссылки подтверждения email
  • DOCS_BASE_URL используется при сборке статического сайта документации