Stage 1 of the dev-as-prod-mirror rework. The auto-provisioned "Dev Sandbox" game and dummy users are removed so the dev contour starts empty like prod; the separate legacy-report loader stays as the test-data path. - delete backend/internal/devsandbox (package + tests) - drop the bootstrap call + DevSandboxConfig (struct, Config field, BACKEND_DEV_SANDBOX_* env, defaults, loader, validation) - strip BACKEND_DEV_SANDBOX_* from dev-deploy + local-dev compose and .env.example; the generic engine-recycle / prune-broken-engines logic stays (it serves real games) - update tooling docs (dev-deploy README + KNOWN-ISSUES, local-dev README + Makefile) and stale comments; DeleteGame and InsertMembershipDirect remain (exercised by lobby integration tests) No app behaviour change beyond not auto-creating the sandbox game.
1.9 KiB
tools/dev-deploy/ — known issues
Issues that surfaced in the long-lived dev environment. Each entry lists the observed symptom, the diagnostic evidence, and the fix or the open questions that have to be answered before a fix lands.
docker restart galaxy-dev-backend fails after the CI runner cleans up
Status: fixed (2026-05-19). Kept here as a postmortem in case the symptom resurfaces in a different form.
Symptom
docker restart galaxy-dev-backend from the host failed with:
Error response from daemon: ... error mounting
"/home/runner/.cache/act/<workspace>/hostexecutor/pkg/geoip/test-data/test-data/GeoIP2-Country-Test.mmdb"
to rootfs at "/var/lib/galaxy/geoip.mmdb": ... not a directory
The container ended up Exited (127) and never came back.
Cause
tools/dev-deploy/docker-compose.yml used to mount the geoip
database via a path relative to the compose file
(../../pkg/geoip/test-data/test-data/GeoIP2-Country-Test.mmdb). When
the dev-deploy.yaml Gitea runner invoked docker compose up, it
resolved that relative path against the runner's ephemeral workspace
under /home/runner/.cache/act/<hash>/hostexecutor/tools/dev-deploy/,
so the bind-mount source baked into the running container pointed at
that ephemeral path. The runner deleted the workspace once the
workflow ended, the source disappeared, and the next docker restart
failed to remount it.
Fix
Replaced the bind-mount with a named volume,
galaxy-dev-geoip-data, seeded by the dev-deploy.yaml workflow
(and by the new make seed-geoip target) at deploy time. The
backend mounts the volume as /var/lib/galaxy:ro, so the bind
source is a Docker-managed volume — independent of the runner
workspace — and survives a docker restart. See
.gitea/workflows/dev-deploy.yaml ("Seed geoip volume" step) and
tools/dev-deploy/Makefile (seed-geoip target).