version: '3.8'

# Production Docker Compose for ParentFlow
# PostgreSQL is on dedicated server: 10.0.0.207
# These services run on application server: 10.0.0.240

services:
  # PostgreSQL removed - using dedicated server
  # Connection: postgresql://postgres:a3ppq@10.0.0.207:5432/parentflow
  # Migrations should be run directly on the database server

  redis:
    image: redis:7-alpine
    container_name: parentflow-redis-prod
    ports:
      - "6379:6379"
    volumes:
      - redis_prod_data:/data
    networks:
      - parentflow-network
    command: redis-server --appendonly yes --requirepass ${REDIS_PASSWORD:-parentflow_redis_password_2024}
    restart: unless-stopped
    healthcheck:
      test: ["CMD", "redis-cli", "--raw", "incr", "ping"]
      interval: 10s
      timeout: 3s
      retries: 5

  mongodb:
    image: mongo:4.4
    container_name: parentflow-mongodb-prod
    environment:
      MONGO_INITDB_ROOT_USERNAME: parentflow_admin
      MONGO_INITDB_ROOT_PASSWORD: ${MONGO_PASSWORD:-parentflow_mongo_password_2024}
      MONGO_INITDB_DATABASE: parentflow_ai_chat
    ports:
      - "27017:27017"
    volumes:
      - mongodb_prod_data:/data/db
      - mongodb_prod_config:/data/configdb
    networks:
      - parentflow-network
    restart: unless-stopped
    healthcheck:
      test: echo 'db.runCommand("ping").ok' | mongo localhost:27017/test --quiet
      interval: 10s
      timeout: 5s
      retries: 5

  minio:
    image: minio/minio:RELEASE.2023-01-25T00-19-54Z
    container_name: parentflow-minio-prod
    environment:
      MINIO_ROOT_USER: ${MINIO_ROOT_USER:-parentflow_minio_admin}
      MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:-parentflow_minio_password_2024}
    ports:
      - "9000:9000"
      - "9001:9001"
    volumes:
      - minio_prod_data:/data
    networks:
      - parentflow-network
    command: server /data --console-address ":9001"
    restart: unless-stopped
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
      interval: 30s
      timeout: 20s
      retries: 3

networks:
  parentflow-network:
    driver: bridge

volumes:
  redis_prod_data:
    driver: local
  mongodb_prod_data:
    driver: local
  mongodb_prod_config:
    driver: local
  minio_prod_data:
    driver: local