services:
  # Main ChatBot Application
  chatbot:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: py_chatbot
    restart: unless-stopped
    ports:
      - "8080:8080"
    environment:
      # Database Configuration
      - DB_TYPE=sqlite
      - SQLITE_PATH=/app/data/chatbot.db

      # Flask Configuration
      - FLASK_HOST=0.0.0.0
      - FLASK_PORT=8080
      - FLASK_DEBUG=false
      - FLASK_SECRET_KEY=your-super-secret-key-change-this-in-production

      # Session Configuration
      - SESSION_LIFETIME_HOURS=24
      - SESSION_COOKIE_SECURE=false
      - SESSION_COOKIE_HTTPONLY=true
    volumes:
      # Persist database and logs
      - chatbot_data:/app/data
      - chatbot_logs:/app/logs
    networks:
      - chatbot_network
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8080/"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 30s

  # Optional: PostgreSQL Database (for production)
  #postgres:
  #  image: postgres:15-alpine
  #  container_name: py_chatbot_postgres
  #  restart: unless-stopped
  #  environment:
  #    - POSTGRES_DB=chatbot
  #    - POSTGRES_USER=chatbot_user
  #    - POSTGRES_PASSWORD=secure_password_change_this
  #  volumes:
  #    - postgres_data:/var/lib/postgresql/data
  #    - ./init.sql:/docker-entrypoint-initdb.d/init.sql:ro
  #  networks:
  #    - chatbot_network
  #  profiles:
  #    - postgres

# Named Volumes
volumes:
  chatbot_data:
    driver: local
  chatbot_logs:
    driver: local
  #postgres_data:
  #  driver: local

# Networks
networks:
  chatbot_network:
    driver: bridge