# Reference layout: Django ASGI + Reflex backend + Redis + Postgres.
# Not wired into the library; copy/adapt for your project.
#
#   docker compose -f docs/examples/docker-compose.scaling.yml up

services:
  postgres:
    image: postgres:16
    environment:
      POSTGRES_DB: app
      POSTGRES_USER: app
      POSTGRES_PASSWORD: app
    volumes:
      - pgdata:/var/lib/postgresql/data

  redis:
    image: redis:7-alpine

  django:
    build: .
    command: >
      uv run uvicorn config.asgi:application
      --host 0.0.0.0 --port 8000 --workers 4
    environment:
      DJANGO_SETTINGS_MODULE: config.production
      DATABASE_URL: postgres://app:app@postgres:5432/app
      REDIS_URL: redis://redis:6379/0
    depends_on:
      - postgres
      - redis
    ports:
      - "8000:8000"

  reflex:
    build: .
    command: >
      uv run reflex run --env prod --backend-only
    environment:
      DJANGO_SETTINGS_MODULE: config.production
      DATABASE_URL: postgres://app:app@postgres:5432/app
      REDIS_URL: redis://redis:6379/0
    depends_on:
      - postgres
      - redis
    ports:
      - "8001:8001"

  nginx:
    image: nginx:alpine
    volumes:
      - ./docs/examples/deploy/nginx.conf:/etc/nginx/conf.d/default.conf:ro
    ports:
      - "443:443"
    depends_on:
      - django
      - reflex

volumes:
  pgdata:

