Networking: the superadmin console now mirrors `app` instead of a loopback-only host port. Base compose drops the host port; the dev override binds 127.0.0.1:8091; the prod overlay joins the `intranet` network and listens on :80 with --proxy-headers so NPM can proxy it. CLI: add `purge-test-users` (dry-run by default, --commit to delete, --keep allow-list defaulting to the real accounts). Deletes child rows explicitly (DB-agnostic) plus email-keyed OTPs, so smoke-test signups that were pointed at prod can be cleaned repeatably instead of via ad-hoc SQL. Covered by 6 new tests. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
23 lines
1 KiB
YAML
23 lines
1 KiB
YAML
# Local-dev overlay. Auto-loaded by `docker compose up` (no -f flags needed),
|
|
# IGNORED on the VPS because prod uses explicit `-f docker-compose.yml -f
|
|
# docker-compose.prod.yml`. Keep dev-only conveniences here so the base
|
|
# `docker-compose.yml` stays prod-ready.
|
|
|
|
services:
|
|
app:
|
|
# Dev: mount the source over the image's copy so edits on the host
|
|
# land in the container without a rebuild; `--reload` restarts uvicorn
|
|
# when a file changes. Prod bakes the code into the image (Dockerfile)
|
|
# and uses the plain command from docker-compose.yml.
|
|
command: ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000",
|
|
"--workers", "1", "--reload", "--reload-dir", "/app/app"]
|
|
volumes:
|
|
- ./app:/app/app
|
|
ports:
|
|
- "${CASSANDRA_PORT:-8000}:8000"
|
|
|
|
admin:
|
|
# Dev: reach the console at http://localhost:8091 (loopback only). Prod
|
|
# drops this and fronts it with NPM instead (docker-compose.prod.yml).
|
|
ports:
|
|
- "127.0.0.1:${CASSANDRA_ADMIN_PORT:-8091}:8000"
|