version: '3.8' services: kiro-gateway: build: context: . dockerfile: Dockerfile container_name: kiro-gateway ports: - "8000:8000" environment: # Server configuration - SERVER_HOST=0.0.0.0 - SERVER_PORT=8000 # Required: Set your proxy API key # You can also use .env file (see env_file below) - PROXY_API_KEY=${PROXY_API_KEY:-my-super-secret-password-123} # Authentication (choose one method) # Option 1: Refresh token - REFRESH_TOKEN=${REFRESH_TOKEN:-} # Option 2: Profile ARN (optional, for Kiro IDE) - PROFILE_ARN=${PROFILE_ARN:-} # Option 3: Credentials file path (mounted as volume below) - KIRO_CREDS_FILE=${KIRO_CREDS_FILE:-} # Option 4: kiro-cli SQLite database (mounted as volume below) - KIRO_CLI_DB_FILE=${KIRO_CLI_DB_FILE:-} # Optional settings - KIRO_REGION=${KIRO_REGION:-us-east-1} - LOG_LEVEL=${LOG_LEVEL:-INFO} - DEBUG_MODE=${DEBUG_MODE:-off} # VPN/Proxy settings (for restricted networks) - VPN_PROXY_URL=${VPN_PROXY_URL:-} # Alternative: Load all variables from .env file env_file: - .env volumes: # Mount credentials file (if using KIRO_CREDS_FILE) # Uncomment and adjust path as needed: # - ~/.aws/sso/cache:/home/kiro/.aws/sso/cache:ro # Mount kiro-cli database (if using KIRO_CLI_DB_FILE) # Uncomment and adjust path as needed: # - ~/.local/share/kiro-cli:/home/kiro/.local/share/kiro-cli:ro # Mount debug logs directory (optional, for debugging) - ./debug_logs:/app/debug_logs restart: unless-stopped # Health check healthcheck: test: ["CMD", "python", "-c", "import httpx; httpx.get('http://localhost:8000/health', timeout=5)"] interval: 30s timeout: 10s retries: 3 start_period: 5s # Resource limits (recommended for production) # Adjust based on your workload and available resources deploy: resources: limits: cpus: '2' # Maximum CPU cores (streaming can be CPU-intensive) memory: 1G # Maximum memory (sufficient for FastAPI + streaming) reservations: cpus: '0.5' # Minimum guaranteed CPU memory: 256M # Minimum guaranteed memory networks: default: name: kiro-gateway-network