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

Deployment

Dev — Docker Compose

# docker-compose.yml (conceptual)
services:
  postgres:
    image: postgres:16
    ports: ["5432:5432"]
  redis:
    image: redis:7-alpine
    ports: ["6379:6379"]
  nats:
    image: nats:2-alpine
    ports: ["4222:4222"]
  minio:
    image: minio/minio
    ports: ["9000:9000"]
  api:
    build: ./services/api
    ports: ["8000:8000"]
    env_file: .env
  realtime:
    build: ./services/realtime
    ports: ["8001:8001"]
  bot:
    build: ./services/bot
    env_file: .env
  web:
    build: ./apps/web
    ports: ["3000:3000"]

Environment variables

Variable Service Описание
DATABASE_URL api PostgreSQL DSN
REDIS_URL api, realtime, bot Redis DSN
NATS_URL api, bot NATS URL
JWT_SECRET api HS256 secret
BOT_TOKEN bot, api Telegram bot token
S3_ENDPOINT api, media MinIO URL
S3_ACCESS_KEY media
S3_SECRET_KEY media

Секреты

Никогда не коммитить .env. Использовать .env.example без значений.

Phase 1: Modular monolith

Один образ tabletime-api содержит модули auth, session, game, media.

Отдельные процессы: bot, realtime (опционально в том же образе).

Prod checklist

  • [ ] TLS на Nginx
  • [ ] PostgreSQL backups daily
  • [ ] Redis persistence AOF
  • [ ] Health checks /health на каждом сервисе
  • [ ] Resource limits в K8s/Docker

MkDocs (документация)

pip install -r requirements-docs.txt
mkdocs build
# Deploy site/ to GitHub Pages or static host

Связанные диаграммы