# `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/<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).
