# Full Stack Docker Compose # Includes: Kiro Gateway, Dashboard, Prometheus, Grafana version: '3.8' services: # Kiro Gateway (FastAPI Backend) kiro-gateway: build: context: .. dockerfile: Dockerfile container_name: kiro-gateway ports: - "8000:8000" environment: - PROXY_API_KEY=${PROXY_API_KEY:-my-super-secret-password-123} - METRICS_ENABLED=true - LOAD_BALANCER_ENABLED=${LOAD_BALANCER_ENABLED:-false} - LOAD_BALANCER_STRATEGY=${LOAD_BALANCER_STRATEGY:-round_robin} env_file: - ../.env volumes: # Mount credentials if using file-based auth - ${HOME}/.aws/sso/cache:/home/kiro/.aws/sso/cache:ro # Debug logs - ../debug_logs:/app/debug_logs # Accounts config (optional) - ../accounts.json:/app/accounts.json:ro healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8000/health"] interval: 30s timeout: 10s retries: 3 networks: - kiro-network restart: unless-stopped # Dashboard (Next.js) dashboard: build: context: .. dockerfile: docker/Dockerfile.dashboard container_name: kiro-dashboard ports: - "3000:3000" environment: - NEXT_PUBLIC_API_URL=http://kiro-gateway:8000 - DASHBOARD_API_KEY=${PROXY_API_KEY:-my-super-secret-password-123} depends_on: - kiro-gateway networks: - kiro-network restart: unless-stopped # Prometheus (Metrics Storage) prometheus: image: prom/prometheus:v2.48.0 container_name: kiro-prometheus ports: - "9090:9090" volumes: - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro - prometheus-data:/prometheus command: - '--config.file=/etc/prometheus/prometheus.yml' - '--storage.tsdb.path=/prometheus' - '--web.console.libraries=/usr/share/prometheus/console_libraries' - '--web.console.templates=/usr/share/prometheus/consoles' - '--web.enable-lifecycle' - '--storage.tsdb.retention.time=30d' depends_on: - kiro-gateway networks: - kiro-network restart: unless-stopped # Grafana (Visualization - Optional) grafana: image: grafana/grafana:10.2.0 container_name: kiro-grafana ports: - "3001:3000" environment: - GF_SECURITY_ADMIN_USER=admin - GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_PASSWORD:-admin} - GF_USERS_ALLOW_SIGN_UP=false volumes: - grafana-data:/var/lib/grafana - ./grafana/provisioning:/etc/grafana/provisioning:ro depends_on: - prometheus networks: - kiro-network restart: unless-stopped networks: kiro-network: driver: bridge volumes: prometheus-data: grafana-data: