diff --git a/DEPLOYMENT_RUNBOOK.md b/DEPLOYMENT_RUNBOOK.md index 55e4205..f6fc127 100644 --- a/DEPLOYMENT_RUNBOOK.md +++ b/DEPLOYMENT_RUNBOOK.md @@ -189,14 +189,22 @@ DATABASE_URL=postgres://eventsnap:@db:5432/eventsnap ADMIN_PASSWORD_HASH='' # ── Paths — must match the volume mounts ────────────────────────────────── -MEDIA_PATH=/media # pinned by compose anyway, but keep consistent -EXPORT_PATH=/exports # NOT pinned by compose — see the trap in §7.3 +# All four of these are PINNED in docker-compose.yml under `app.environment`, which overrides +# `env_file`. Keep them consistent here for readability, but understand that editing them in +# `.env` changes nothing — the pin is what the container gets. Change the pin. +MEDIA_PATH=/media +EXPORT_PATH=/exports +APP_PORT=3000 # ── Sizing (see the two corrections below) ──────────────────────────────── # 15, matching .env.example, the `db` sizing comment in docker-compose.yml and the code # default. An earlier draft of this runbook said 30: that does not fit the 1G memory limit # compose allots `db`, and 30 simultaneous queries cannot run on 2 vCPU anyway — they queue # on the CPU instead of on the pool. Raise it only alongside more cores AND a bigger limit. +# +# ALSO PINNED IN COMPOSE (see above), and pinned for a sharper reason than the paths: an +# unparseable value here is boot-FATAL rather than falling back to the default, so a stray +# quote or a trailing inline comment in `.env` would crash-loop the app behind a live Caddy. DATABASE_MAX_CONNECTIONS=15 COMPRESSION_WORKER_CONCURRENCY=2