mcaxl/docs/docker-compose.yml
Ryan Malloy 314a80d6de docs: deployment scaffolding + logos + live cluster examples
Three additions to the docs site, all atomic to docs/:

1. Deployment configs (Dockerfile + Caddyfile + docker-compose.yml +
   .env.example + Makefile) mirroring bingham/cucx's pattern. The
   compose service uses caddy-docker-proxy labels with the operator's
   .mcp.l.supported.systems wildcard DNS pattern; suggested subdomain
   is mcaxl-docs.mcp.l.supported.systems.

2. Logo + favicon (forest-green palette matching the existing custom.css
   accent). Wordmark uses ui-monospace with currentColor so Starlight
   inverts on light/dark; icon-mark is a terminal chevron + three
   diminishing query-row lines (audit-by-query motif).

3. Live cluster examples in reference/tools.md for axl_version,
   axl_list_tables (route% pattern), and axl_describe_table
   (routepartition). Outputs sanitized per python.md PII rules
   (15.0.1.12900(234) → 15.0(1); cluster-fingerprinting build string
   removed).

Build clean: 17 pages built, pagefind search index across all,
favicon resolves to /favicon.svg, logo fingerprinted into _astro/.

Not yet deployed — operator wires docker compose up when ready.
2026-04-29 04:19:20 -06:00

72 lines
2.1 KiB
YAML

# mcaxl docs — dev/prod via compose profiles.
#
# Mode is driven by COMPOSE_PROFILES in .env:
# COMPOSE_PROFILES=dev → hot-reload astro dev server at https://${DEV_DOMAIN}
# COMPOSE_PROFILES=prod → static site via in-container Caddy at https://${DOMAIN}
#
# Both profiles sit behind the host's external caddy-docker-proxy on the
# `caddy` network. mcaxl is a public OSS project; no basic auth.
#
# Prerequisite: `docker network create caddy` (one-time, shared with the
# edge caddy-docker-proxy instance).
services:
docs-dev:
profiles: ["dev"]
build:
context: .
dockerfile: Dockerfile
target: dev
image: ${COMPOSE_PROJECT}-dev
container_name: ${COMPOSE_PROJECT}-dev
restart: unless-stopped
environment:
ASTRO_TELEMETRY_DISABLED: "1"
NODE_ENV: development
DOMAIN: ${DEV_DOMAIN} # Vite HMR binds wss://${DEV_DOMAIN}:443
volumes:
- .:/app
- /app/node_modules
- /app/.astro
networks:
- caddy
labels:
caddy: ${DEV_DOMAIN}
caddy.reverse_proxy: "{{upstreams 4321}}"
# ── HMR-through-Caddy streaming tweaks ──
# Vite HMR doesn't send app-level pings; Caddy closes idle WebSockets
# after ~10-15s without these. Refs in ~/.claude/CLAUDE.md.
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"
caddy.encode: "gzip zstd"
docs-prod:
profiles: ["prod"]
build:
context: .
dockerfile: Dockerfile
target: prod
args:
DOMAIN: ${DOMAIN}
image: ${COMPOSE_PROJECT}-prod
container_name: ${COMPOSE_PROJECT}-prod
restart: unless-stopped
networks:
- caddy
labels:
caddy: ${DOMAIN}
caddy.reverse_proxy: "{{upstreams 80}}"
caddy.encode: "gzip zstd"
networks:
caddy:
external: true