# `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: ```text Error response from daemon: ... error mounting "/home/runner/.cache/act//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//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).