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