services: docs: build: context: ./docs target: ${APP_ENV:-dev} args: - DOMAIN=${DOMAIN:-mcnoaa-tides.l.warehack.ing} restart: unless-stopped environment: - DOMAIN=${DOMAIN:-mcnoaa-tides.l.warehack.ing} - VITE_HMR_HOST=${VITE_HMR_HOST:-} - ASTRO_TELEMETRY_DISABLED=1 volumes: # Dev mode: mount source for hot reload - ./docs/src:/app/src:ro - ./docs/public:/app/public:ro - ./docs/astro.config.mjs:/app/astro.config.mjs:ro networks: - caddy labels: caddy: ${DOMAIN:-mcnoaa-tides.l.warehack.ing} caddy.reverse_proxy: "{{upstreams 4321}}" # WebSocket/HMR streaming support caddy.reverse_proxy.flush_interval: "-1" caddy.reverse_proxy.transport: "http" caddy.reverse_proxy.transport.read_timeout: "0" caddy.reverse_proxy.transport.write_timeout: "0" caddy.reverse_proxy.transport.keepalive: "5m" caddy.reverse_proxy.transport.keepalive_idle_conns: "10" caddy.reverse_proxy.stream_timeout: "24h" caddy.reverse_proxy.stream_close_delay: "5s" mcp: build: context: . dockerfile: Dockerfile.mcp restart: unless-stopped environment: - MCP_TRANSPORT=streamable-http - MCP_HOST=0.0.0.0 - MCP_PORT=8000 networks: - caddy labels: caddy: mcp.${DOMAIN:-mcnoaa-tides.l.warehack.ing} caddy.reverse_proxy: "{{upstreams 8000}}" # SSE streaming support for MCP server→client messages caddy.reverse_proxy.flush_interval: "-1" caddy.reverse_proxy.transport: "http" caddy.reverse_proxy.transport.read_timeout: "0" caddy.reverse_proxy.transport.write_timeout: "0" caddy.reverse_proxy.transport.keepalive: "5m" caddy.reverse_proxy.transport.keepalive_idle_conns: "10" caddy.reverse_proxy.stream_timeout: "24h" caddy.reverse_proxy.stream_close_delay: "5s" networks: caddy: external: true