docs/en_EN/infrastructure/devops/Β· README β Docker
The project uses modular Docker containers generated by the installer based on your module selection.
| Service | Image | Port | Condition |
|---|---|---|---|
backend |
Custom (FastAPI) | 8000 | If FastAPI selected |
bot |
Custom (aiogram) | β | If Bot selected |
worker |
Custom (ARQ) | β | If Bot selected |
redis |
redis:7-alpine | 6379 | If Bot selected |
postgres |
postgres:16-alpine | 5432 | If FastAPI selected |
nginx |
nginx:alpine / Custom | 80, 443 | If any backend |
βββββββββββββββββββββββββββββββββββββββββββββββ
β nginx β
β :80 / :443 (SSL) β
βββββββββββββββββ¬ββββββββββββββββββββββββββββββ
β proxy_pass
βββββββββββββββββΌββββββββββββ βββββββββββββββ
β backend (FastAPI) β β bot (aiogramβ
β :8000 β β polling) β
βββββββββββββ¬ββββββββββββββββ ββββββββ¬βββββββ
β β
βββββββββββββΌββββ ββββββββΌβββββββ
β postgres β β redis β
β :5432 β β :6379 β
βββββββββββββββββ ββββββββ¬βββββββ
β
ββββββββΌβββββββ
β worker β
β (ARQ) β
βββββββββββββββ
deploy/
βββ fastapi/
β βββ Dockerfile # Multi-stage: builder β runtime
βββ bot/
β βββ Dockerfile # Multi-stage: builder β runtime
βββ worker/
β βββ Dockerfile # Same as bot, different CMD
βββ nginx/
β βββ Dockerfile # Production nginx with configs
β βββ nginx-main.conf # Main config (upstream, gzip, rate limiting)
β βββ site.conf # Production (SSL, certbot, security headers)
β βββ site-local.conf # Development (port 80, no SSL)
βββ docker-compose.yml # Development
βββ docker-compose.prod.yml # Production (images from GHCR)
cd deploy
docker compose up -d
docker compose logs -f
Production deployment is automated via CD Release workflow. Images are built and pushed to GitHub Container Registry (GHCR).
All services read from .env file. See github-secrets.md for variable reference.