Перейти к содержанию

Docker Compose

В репозитории четыре compose-файла (раньше было пять — лишние удалены).

Файлы

Файл Когда использовать
docker-compose.dev.yml Локальная разработка: только PostgreSQL
docker-compose.yml Основной production — backend, frontend, nginx
docker-compose.ssl.yml Подключать вместе с основным, если SSL терминируется в Docker
docker-compose.quick.yml Устаревший алиас (includedocker-compose.yml)

Команды

Production (ваш типичный случай: внешняя БД)

cp .env.example .env   # DATABASE_URL, JWT_SECRET, VITE_API_URL=/api
docker compose up -d --build
docker compose exec backend node migrations/migration-runner.js

Nginx в Docker слушает 127.0.0.1:9080. Снаружи — nginx/Caddy на хосте проксирует 80/443 → 9080.

PostgreSQL в том же Docker

docker compose --profile db up -d

В .env укажите DATABASE_URL=postgresql://library_user:ПАРОЛЬ@postgres:5432/library.

SSL внутри Docker

docker compose -f docker-compose.yml -f docker-compose.ssl.yml up -d

Нужны сертификаты в /etc/letsencrypt и настроенный nginx.prod.conf.

Свой nginx на хосте (без контейнера nginx)

docker compose up -d backend frontend
# опционально: --profile db

Проксируйте на 127.0.0.1:3001 (API) и 127.0.0.1:8080 (статика) или только на :9080, если поднимаете все три сервиса.

Фоновые задачи (очистка броней + бэкапы)

По умолчанию достаточно cron на хосте. Альтернатива в Docker:

docker compose --profile jobs up -d
  • booking-cleanup — раз в сутки отменяет просроченные брони (дополнение к автоматической отмене при работе с очередью)
  • backup-cron — плановый pg_dump в ./backups (нужны BACKUP_ENABLED=true, DATABASE_URL, pg_dump в образе backend)

Мониторинг (Prometheus + Grafana)

В .env задайте METRICS_TOKEN (тот же, что для GET /metrics на backend).

docker compose --profile monitoring up -d
  • Grafana: http://127.0.0.1:3000 (логин admin, пароль GRAFANA_ADMIN_PASSWORD или admin)
  • Prometheus: http://127.0.0.1:9090
  • Дашборд Library System Overview подхватывается автоматически
  • Алерты: backlog outbox, Redis down, высокий error rate, медленные ответы

Профили

Профиль Сервисы
(нет) backend, frontend, nginx, redis, outbox-worker
db + postgres
jobs + booking-cleanup, backup-cron
monitoring + prometheus, grafana

Переменные

См. .env.example и server/env.example. В docker-compose.yml для backend заданы OUTBOX_WORKER_ENABLED, тома uploads, logs, backups.

Миграция со старых файлов

Было Стало
docker-compose.quick.yml up docker compose up (или старый -f quick.yml — всё ещё работает)
docker-compose.prod.yml docker compose -f docker-compose.yml -f docker-compose.ssl.yml up
docker-compose.prod-simple.yml docker compose up backend frontend (+ --profile db)
Старый docker-compose.yml (только API + backup sidecar) Удалён; бэкапы — админ-панель или pg_dump