dev-deploy: fix backend startup in CI

Two bugs surfaced on the first real merge into development:

1. `${{ env.HOME }}` evaluates to empty string at the workflow stage,
   so GALAXY_DEV_GAME_STATE_DIR became `/.galaxy-dev/game-state`.
   Resolve in the shell instead of YAML.

2. The compose bind-mount of GeoIP2-Country-Test.mmdb referenced a
   path inside the runner's workspace volume, which the host Docker
   daemon cannot see — it created an empty directory and the backend
   crashed with "geoip database: is a directory" in a restart loop.
   Bake the file into the backend image so dev-deploy no longer needs
   a bind-mount; local-dev compose still mounts it on top for swap-in
   during development.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Ilia Denisov
2026-05-14 00:22:16 +02:00
parent 6686059535
commit 0da360a644
3 changed files with 19 additions and 3 deletions
+3 -2
View File
@@ -100,9 +100,10 @@ jobs:
- name: Bring up the stack - name: Bring up the stack
working-directory: tools/dev-deploy working-directory: tools/dev-deploy
env:
GALAXY_DEV_GAME_STATE_DIR: ${{ env.HOME }}/.galaxy-dev/game-state
run: | run: |
# Resolve in the shell, not in YAML expressions — `env.HOME`
# is empty at the workflow-evaluation stage.
export GALAXY_DEV_GAME_STATE_DIR="$HOME/.galaxy-dev/game-state"
mkdir -p "$GALAXY_DEV_GAME_STATE_DIR" mkdir -p "$GALAXY_DEV_GAME_STATE_DIR"
docker compose up -d --wait --remove-orphans docker compose up -d --wait --remove-orphans
+5 -1
View File
@@ -125,7 +125,11 @@ services:
target: ${GALAXY_DEV_GAME_STATE_DIR} target: ${GALAXY_DEV_GAME_STATE_DIR}
bind: bind:
create_host_path: true create_host_path: true
- ../../pkg/geoip/test-data/test-data/GeoIP2-Country-Test.mmdb:/var/lib/galaxy/geoip.mmdb:ro # The GeoIP database is baked into the backend image (see
# tools/local-dev/backend.Dockerfile); a bind-mount is not used
# here because the source path resolves inside the runner
# workspace volume and the host Docker daemon cannot see it,
# which produced an "is a directory" error in CI.
networks: networks:
- galaxy-internal - galaxy-internal
healthcheck: healthcheck:
+11
View File
@@ -24,6 +24,16 @@ COPY pkg/transcoder/ ./pkg/transcoder/
COPY pkg/util/ ./pkg/util/ COPY pkg/util/ ./pkg/util/
COPY backend/ ./backend/ COPY backend/ ./backend/
# Bake the GeoIP test database into the build context so downstream
# stages can copy it into the runtime image. The path is the
# `MaxMind-DB` git submodule under `pkg/geoip/test-data/`; the file is
# the smallest country DB MaxMind publishes and is what every other
# dev-stack uses. Baking it lets dev-deploy skip the bind-mount that
# fails on runner-workspace volumes the host Docker daemon cannot see.
RUN mkdir -p /out/var/lib/galaxy
COPY pkg/geoip/test-data/test-data/GeoIP2-Country-Test.mmdb \
/out/var/lib/galaxy/geoip.mmdb
RUN <<'EOF' cat > go.work RUN <<'EOF' cat > go.work
go 1.26.2 go 1.26.2
@@ -67,5 +77,6 @@ EXPOSE 8080
EXPOSE 8081 EXPOSE 8081
COPY --from=builder /out/backend /usr/local/bin/backend COPY --from=builder /out/backend /usr/local/bin/backend
COPY --from=builder /out/var/lib/galaxy/geoip.mmdb /var/lib/galaxy/geoip.mmdb
ENTRYPOINT ["/usr/local/bin/backend"] ENTRYPOINT ["/usr/local/bin/backend"]