# Nginx reverse proxy config (add to your nginx site config): # # location /ac-helper/ { # proxy_pass http://localhost:8000/; # proxy_http_version 1.1; # proxy_set_header Upgrade $http_upgrade; # proxy_set_header Connection "upgrade"; # proxy_set_header Host $host; # proxy_set_header X-Real-IP $remote_addr; # } # # This strips /ac-helper/ prefix before forwarding to the container. # The frontend uses /ac-helper/api and /ac-helper/ws which the proxy forwards # as /api and /ws to the backend. version: '3.9' services: app: build: . container_name: ac-tool restart: unless-stopped ports: - "8000:8000" volumes: - ./data:/app/data environment: # Auth AZURE_TENANT_ID: ${AZURE_TENANT_ID:-e519c2e6-bc6d-4fdf-8d9c-923c2f002385} AZURE_CLIENT_ID: ${AZURE_CLIENT_ID:-9079054c-9620-4757-a256-23413042f1ef} AZURE_REDIRECT_URI: ${AZURE_REDIRECT_URI:-https://ai-sandbox.oliver.solutions/ac-helper/} # Dev mode (set to false in production) DEV_MODE: ${DEV_MODE:-false} DEV_USER_ID: ${DEV_USER_ID:-dev-user-001} DEV_USER_ROLE: ${DEV_USER_ROLE:-admin} # Admin bootstrap ADMIN_EMAIL: ${ADMIN_EMAIL:-daveporter@oliver.agency} # AI providers GEMINI_API_KEY: ${GEMINI_API_KEY} OPENAI_API_KEY: ${OPENAI_API_KEY:-} ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY:-} LLAMA_CLOUD_API_KEY: ${LLAMA_CLOUD_API_KEY:-} # Paths DATA_DIR: /app/data UPLOADS_DIR: /app/data/uploads OUTPUTS_DIR: /app/data/outputs SHEETS_DIR: /app/data/sheets USERS_FILE: /app/data/users.json DROPDOWNS_FILE: /app/data/dropdowns.json healthcheck: test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8000/health')"] interval: 30s timeout: 10s retries: 3 start_period: 20s