services: caddy: image: caddy:2-alpine container_name: gpu-caddy restart: unless-stopped ports: - "80:80" - "443:443" volumes: - ./caddy/Caddyfile:/etc/caddy/Caddyfile - caddy_data:/data depends_on: - hub-api - hub-web networks: - gateway-net hub-web: build: ./hub-web container_name: gpu-hub-web restart: unless-stopped networks: - gateway-net hub-api: build: ./hub-api container_name: gpu-hub-api restart: unless-stopped environment: - OWNER_PASSWORD=${OWNER_PASSWORD} - GUEST_PASSWORD=${GUEST_PASSWORD} - JWT_SECRET=${JWT_SECRET} - BACKENDS_CONFIG=/app/config/backends.json - CORS_ORIGINS=${CORS_ORIGINS:-http://localhost:5173} - DB_PATH=/app/data/gateway.db volumes: - hub_data:/app/data - ./backends.json:/app/config/backends.json:ro extra_hosts: - "host.docker.internal:host-gateway" healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8000/health"] interval: 15s timeout: 5s retries: 3 networks: - gateway-net volumes: caddy_data: hub_data: networks: gateway-net: name: gpu-gateway-network