YAML

docker compose: веб, БД, кеш и очередь

Algonexys · 07.08.2026 · 👁 1

Готовый стек для веб-приложения: зависимости по 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: