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 |
Устаревший алиас (include → docker-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 |