services: # ── Production: Caddy serves static build ────────────────────── docs: build: context: . target: prod args: SITE_URL: https://${DOMAIN} restart: unless-stopped networks: - caddy labels: caddy: ${DOMAIN} caddy.reverse_proxy: "{{upstreams 80}}" # ── Development: Node with HMR ──────────────────────────────── docs-dev: build: context: . target: dev profiles: [dev] volumes: - ./src:/app/src - ./astro.config.mjs:/app/astro.config.mjs - ./package.json:/app/package.json environment: - VITE_HMR_HOST=${DOMAIN} networks: - caddy labels: caddy: ${DOMAIN} caddy.reverse_proxy: "{{upstreams 4321}}" 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