Docker Services¶
Reference for container configuration and management.
Services Overview¶
| Service | Image | Port | Purpose |
|---|---|---|---|
postgres |
postgres:17 |
5432 | Database |
redis |
redis:7 |
6379 | Cache, Celery broker |
minio |
minio/minio |
9000, 9001 | Object storage (S3-compatible) |
PostgreSQL¶
Configuration¶
postgres:
image: postgres:17
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: postgres
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
Connection String¶
Commands¶
# Start
docker compose up -d postgres
# View logs
docker compose logs -f postgres
# Connect with psql
docker compose exec postgres psql -U postgres
# Stop
docker compose stop postgres
Redis¶
Configuration¶
Connection String¶
Commands¶
# Start
docker compose up -d redis
# View logs
docker compose logs -f redis
# Connect with redis-cli
docker compose exec redis redis-cli
# Monitor commands
docker compose exec redis redis-cli MONITOR
# Stop
docker compose stop redis
MinIO (S3 Storage)¶
Configuration¶
minio:
image: minio/minio
command: server /data --console-address ":9001"
environment:
MINIO_ROOT_USER: minioadmin
MINIO_ROOT_PASSWORD: minioadmin
ports:
- "9000:9000" # API
- "9001:9001" # Console
volumes:
- minio_data:/data
Environment Variables¶
AWS_S3_ACCESS_KEY_ID=minioadmin
AWS_S3_SECRET_ACCESS_KEY=minioadmin
AWS_S3_BUCKET_NAME=static
AWS_S3_ENDPOINT_URL=http://localhost:9000
Commands¶
# Start
docker compose up -d minio minio-create-buckets
# View logs
docker compose logs -f minio
# Access console
open http://localhost:9001
# Stop
docker compose stop minio
Web Console¶
Access MinIO console at http://localhost:9001
- Username:
minioadmin - Password:
minioadmin
Init Containers¶
Migrations¶
migrations:
build: .
command: python src/manage.py migrate
depends_on:
- postgres
environment:
- DATABASE_URL=postgresql://postgres:postgres@postgres:5432/postgres
Run:
Collect Static¶
collectstatic:
build: .
command: python src/manage.py collectstatic --noinput
depends_on:
- minio
environment:
- AWS_S3_ENDPOINT_URL=http://minio:9000
Run:
Common Operations¶
Start All Infrastructure¶
Stop All Services¶
Reset Everything (Including Data)¶
docker compose down -v # Remove volumes
docker compose up -d postgres redis minio minio-create-buckets
docker compose up migrations
View All Logs¶
Check Service Status¶
Restart a Service¶
Volumes¶
| Volume | Service | Purpose |
|---|---|---|
postgres_data |
PostgreSQL | Database files |
redis_data |
Redis | Persistence |
minio_data |
MinIO | Object storage |
Inspect Volume¶
Remove Volume¶
Network¶
All services connect to a shared network for inter-service communication.
Internal hostnames:
postgres- Databaseredis- Cacheminio- Object storage
Troubleshooting¶
Port Already in Use¶
Container Won't Start¶
Database Connection Refused¶
Ensure postgres is running and healthy:
MinIO Bucket Not Found¶
Run bucket creation:
Reset to Clean State¶
docker compose down -v
docker compose up -d postgres redis minio minio-create-buckets
docker compose up migrations collectstatic
Production Considerations¶
For production deployments:
- Use managed services: AWS RDS, ElastiCache, S3
- Set strong passwords: Don't use defaults
- Enable persistence: Configure backup strategies
- Use health checks: Add to compose file
- Set resource limits: Memory and CPU limits
Example health check: