| name | docker-deployment |
| description | Docker Compose, container services, deployment |
Skill: Docker Deployment
Key Files
| File | Purpose |
|---|
docker-compose.yml | Development / local Compose stack |
deployment/docker-compose.yml | Production Compose stack |
deployment/env.sample | Sample production environment variables |
deployment/env.dev.sample | Sample development environment variables |
deployment/nginx/ | Nginx reverse-proxy configuration |
DEPLOYMENT.md | Step-by-step production deployment guide |
Services (Development Stack)
| Service | Image / Build | Role |
|---|
web | ./app (Dockerfile) | Django dev server on port 8000 |
worker | ./app (Dockerfile) | Celery task worker |
redis | redis:latest | Message broker and cache |
db | postgres:15 | PostgreSQL database |
Building and Running (Development)
cp deployment/env.dev.sample .env.dev
docker compose up --build
docker compose up -d --build
docker compose logs -f web
docker compose logs -f worker
docker compose down
Running a Management Command Inside a Container
docker compose exec web python manage.py migrate
docker compose exec web python manage.py create_admin_user
Use create_admin_user as the default onboarding command for least-privilege admin setup.
Use createsuperuser only when full superuser access is explicitly required.
Development vs Production
| Aspect | Development (docker-compose.yml) | Production (deployment/docker-compose.yml) |
|---|
| Web server | Django runserver | Gunicorn behind host-level Nginx |
| Static files | Served by Django | Pre-built and served by Nginx |
| Env file | .env.dev | .env |
| Hot reload | Yes (volume mount) | No |
Environment Variables
Required variables are documented in deployment/env.sample and deployment/env.dev.sample. At minimum, set:
EVY_SECRET_KEY
- individual
EVY_POSTGRES_* vars
EVY_REDIS_URL
EVY_SITE_URL (production only)
See DEPLOYMENT.md for the full production setup walkthrough, including Nginx, SSL (certbot), and backup configuration.