YAML
docker compose: веб, БД, кеш и очередь
Готовый стек для веб-приложения: зависимости по healthcheck, тома и переменные окружения.
Код
services:
web:
build: .
restart: unless-stopped
env_file: [.env]
ports: ["8000:8000"]
depends_on:
db: { condition: service_healthy }
redis: { condition: service_started }
rabbitmq: { condition: service_healthy }
volumes:
- ./media:/app/media
- static:/app/staticfiles
worker:
build: .
restart: unless-stopped
command: python manage.py mailworker
env_file: [.env]
depends_on:
rabbitmq: { condition: service_healthy }
db:
image: postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_DB: ${DB_NAME:-digitmind}
POSTGRES_USER: ${DB_USER:-digitmind}
POSTGRES_PASSWORD: ${DB_PASSWORD:?требуется DB_PASSWORD}
volumes:
- pgdata:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${DB_USER:-digitmind}"]
interval: 10s
timeout: 5s
retries: 5
redis:
image: redis:7-alpine
restart: unless-stopped
command: redis-server --appendonly yes --maxmemory 256mb
volumes: [redisdata:/data]
rabbitmq:
image: rabbitmq:3-management-alpine
restart: unless-stopped
ports: ["15672:15672"]
healthcheck:
test: ["CMD", "rabbitmq-diagnostics", "-q", "ping"]
interval: 15s
retries: 5
volumes:
pgdata:
redisdata:
static: