deploy: split compose into base (prod-ready) + dev override

Compose merges list-typed fields like \`ports\` by concatenation, so the
previous prod overlay couldn't clear the base file's host port binding;
the VPS app ended up listening on both port 80 (intranet) AND host port
8800 simultaneously.

Restructured to the conventional dev/prod split:
- docker-compose.yml: no host port — prod-ready by default
- docker-compose.override.yml: dev-only host port binding (auto-loaded
  by \`docker compose up\` locally, skipped when prod uses explicit -f)
- docker-compose.prod.yml: command-port 80 + intranet network only

Production invocation:
  docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Giorgio Gilestro 2026-05-22 21:30:28 +01:00
parent 7364d11ffe
commit a50c5091c4
4 changed files with 22 additions and 11 deletions

View file

@ -48,8 +48,9 @@ services:
condition: service_healthy
redis:
condition: service_healthy
ports:
- "${CASSANDRA_PORT:-8000}:8000"
# No host port by default — the local-dev override file adds one.
# See docker-compose.override.yml (dev) and docker-compose.prod.yml
# (VPS, NPM-fronted) for the two deployment modes.
scheduler:
build: .