# Solo Mode - Minimal services for single-user local development
# Usage: docker-compose -f infrastructure/docker/docker-compose.yaml -f infrastructure/docker/docker-compose.solo.yaml up

services:
  orchestrator:
    environment:
      - PROVISIONING_MODE=solo
      - ORCHESTRATOR_MAX_CONCURRENT_TASKS=3
      - ORCHESTRATOR_KMS_ENABLED=true
      - ORCHESTRATOR_KMS_SERVER=http://kms:9998
    depends_on:
      kms:
        condition: service_started
    deploy:
      resources:
        limits:
          cpus: '1.0'
          memory: 1024M

  control-center:
    environment:
      - PROVISIONING_MODE=solo
      - CONTROL_CENTER_AUTH_REQUIRED=false
      - CONTROL_CENTER_KMS_ENABLED=true
      - CONTROL_CENTER_KMS_URL=http://kms:9998
    depends_on:
      kms:
        condition: service_started
    deploy:
      resources:
        limits:
          cpus: '0.5'
          memory: 512M

  coredns:
    deploy:
      resources:
        limits:
          cpus: '0.25'
          memory: 256M

  oci-registry:
    environment:
      - ZOT_AUTH_ENABLED=false
      - ZOT_EXTENSIONS_ENABLED=false
    deploy:
      resources:
        limits:
          cpus: '0.5'
          memory: 512M

  # Disable services not needed in solo mode
  extension-registry:
    profiles:
      - disabled
  gitea:
    profiles:
      - disabled

  api-server:
    profiles:
      - disabled

  api-gateway:
    profiles:
      - disabled

  mcp-server:
    profiles:
      - disabled

  postgres:
    profiles:
      - disabled

  # KMS - Mandatory for all modes per ADR-007
  # Solo mode uses local SQLite backend
  kms:
    image: ghcr.io/cosmian/kms:latest
    container_name: provisioning-kms
    ports:
      - "9998:9998"
    volumes:
      - kms-data:/data
    environment:
      - PROVISIONING_MODE=solo
      - KMS_DATABASE_PATH=/data/kms.db
      - KMS_AUTH_METHOD=none  # No auth in solo mode
      - KMS_LOG_LEVEL=info
    # Health check disabled - KMS container has no networking tools
    # Services depend on service_started instead of service_healthy
    restart: unless-stopped
    networks:
      - provisioning-net
    deploy:
      resources:
        limits:
          cpus: '0.5'
          memory: 512M

  harbor-core:
    profiles:
      - disabled

  prometheus:
    profiles:
      - disabled

  grafana:
    profiles:
      - disabled

  loki:
    profiles:
      - disabled

  elasticsearch:
    profiles:
      - disabled

  kibana:
    profiles:
      - disabled

  nginx:
    profiles:
      - disabled

volumes:
  kms-data:
    driver: local
