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:
@@ -100,9 +100,10 @@ jobs:
|
||||
|
||||
- name: Bring up the stack
|
||||
working-directory: tools/dev-deploy
|
||||
env:
|
||||
GALAXY_DEV_GAME_STATE_DIR: ${{ env.HOME }}/.galaxy-dev/game-state
|
||||
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"
|
||||
docker compose up -d --wait --remove-orphans
|
||||
|
||||
|
||||
@@ -125,7 +125,11 @@ services:
|
||||
target: ${GALAXY_DEV_GAME_STATE_DIR}
|
||||
bind:
|
||||
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:
|
||||
- galaxy-internal
|
||||
healthcheck:
|
||||
|
||||
@@ -24,6 +24,16 @@ COPY pkg/transcoder/ ./pkg/transcoder/
|
||||
COPY pkg/util/ ./pkg/util/
|
||||
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
|
||||
go 1.26.2
|
||||
|
||||
@@ -67,5 +77,6 @@ EXPOSE 8080
|
||||
EXPOSE 8081
|
||||
|
||||
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"]
|
||||
|
||||
Reference in New Issue
Block a user