omni-pca-docs/.env.example
Ryan Malloy 17cd57f1bf Compose convention: dev/prod target switch, HMR-friendly Caddy labels
Aligns with the warehack-ing host convention (matches birdcage-docs):

Dockerfile — multi-stage with named targets:
  base   shared npm ci + COPY
  dev    npx astro dev --host 0.0.0.0 --port 4321  (HMR enabled)
  build  npx astro build (produces /app/dist)
  prod   caddy:2-alpine serves /srv with /health probe + HEALTHCHECK

docker-compose.yml — picks the target via APP_ENV in .env:
  build.target = ${APP_ENV:-dev}
  caddy.reverse_proxy upstream port = ${APP_PORT:-4321}
  Adds the streaming/HMR caddy labels CLAUDE.md requires for Vite-over-
  Caddy: flush_interval=-1, transport.read/write_timeout=0, keepalive,
  stream_timeout=24h, stream_close_delay=5s
  Volume mounts ./src, ./public, astro.config.mjs (live in dev, harmless
  in prod since the prod stage doesn't reference /app)

astro.config.mjs — vite.server.hmr block now picks up VITE_HMR_HOST
env var and configures host/protocol/clientPort for wss-on-443 HMR
through Caddy. Falls back to undefined when unset so plain
'npm run dev' still works.

Caddyfile — adds /health endpoint for the Dockerfile HEALTHCHECK,
SPA-style try_files fallback chain (path -> path/index.html -> /index.html).

Makefile — adds 'make dev' / 'make prod' that rewrite APP_ENV+APP_PORT
in .env then rebuild. Tail-logs after up/restart so you see startup
diagnostics without a separate 'make logs'.

.env.example — five vars (COMPOSE_PROJECT_NAME, APP_ENV, APP_PORT,
PUBLIC_DOMAIN, VITE_HMR_HOST), defaulting to prod mode against the
public hai-omni-pro-ii.warehack.ing domain. .env stays gitignored so
each environment (local, remote) can override.

Local container rebuilt + recreated, healthy, /health returns 200,
PUBLIC_DOMAIN locally still set to .l.warehack.ing in the host .env.
2026-05-10 18:05:54 -06:00

18 lines
709 B
Plaintext

# Copy to .env and edit. `make dev` and `make prod` rewrite APP_ENV/APP_PORT
# in place, so leave those two lines as-is — the Makefile owns them.
# Container + network names. Keep distinct so multiple stacks don't clash.
COMPOSE_PROJECT_NAME=omni-pca-docs
# Mode toggle. dev = Astro dev server + HMR on 4321; prod = static caddy on 80.
APP_ENV=prod
APP_PORT=80
# Public hostname Caddy will route to this container. Match the DNS record.
PUBLIC_DOMAIN=hai-omni-pro-ii.warehack.ing
# Vite HMR client hostname — only used in dev. Same as PUBLIC_DOMAIN when
# you want to develop through the live reverse proxy with a real cert,
# or 'localhost' for local-only.
VITE_HMR_HOST=hai-omni-pro-ii.warehack.ing