services: # 1. Reverse Proxy & Frontend Serving frontend: build: context: ./frontend dockerfile: Dockerfile ports: - "3000:80" depends_on: - backend networks: - auteur-network # 2. Backend Orchestrator backend: build: context: ./backend dockerfile: Dockerfile environment: - DATABASE_URL=postgresql+asyncpg://${POSTGRES_USER:-postgres}:${POSTGRES_PASSWORD:-postgres}@db:5432/${POSTGRES_DB:-auteur} - MINIO_ENDPOINT=minio:9000 - MINIO_ACCESS_KEY=${MINIO_ROOT_USER:-minioadmin} - MINIO_SECRET_KEY=${MINIO_ROOT_PASSWORD:-minioadmin} - REDIS_URL=redis://redis:6379/0 - OPENAI_API_BASE=${OPENAI_API_BASE} - OPENAI_API_KEY=${OPENAI_API_KEY} volumes: - ./backend:/app ports: - "8000:8000" depends_on: - db - redis - minio networks: - auteur-network # 3. Database db: image: postgres:16-alpine restart: always environment: - POSTGRES_USER=${POSTGRES_USER:-postgres} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-postgres} - POSTGRES_DB=${POSTGRES_DB:-auteur} volumes: - postgres_data:/var/lib/postgresql/data ports: - "5432:5432" networks: - auteur-network # 4. Object Storage minio: image: minio/minio command: server /data --console-address ":9001" environment: - MINIO_ROOT_USER=${MINIO_ROOT_USER:-minioadmin} - MINIO_ROOT_PASSWORD=${MINIO_ROOT_PASSWORD:-minioadmin} volumes: - minio_data:/data ports: - "9000:9000" - "9001:9001" networks: - auteur-network # 5. Message Broker redis: image: redis:7-alpine ports: - "6379:6379" networks: - auteur-network # 6. Background Worker worker: build: context: ./backend dockerfile: Dockerfile command: celery -A app.worker worker --loglevel=info environment: - DATABASE_URL=postgresql+asyncpg://${POSTGRES_USER:-postgres}:${POSTGRES_PASSWORD:-postgres}@db:5432/${POSTGRES_DB:-auteur} - MINIO_ENDPOINT=minio:9000 - MINIO_ACCESS_KEY=${MINIO_ROOT_USER:-minioadmin} - MINIO_SECRET_KEY=${MINIO_ROOT_PASSWORD:-minioadmin} - REDIS_URL=redis://redis:6379/0 - OPENAI_API_BASE=${OPENAI_API_BASE} - OPENAI_API_KEY=${OPENAI_API_KEY} volumes: - ./backend:/app depends_on: - backend - redis networks: - auteur-network volumes: postgres_data: minio_data: networks: auteur-network: driver: bridge