CI: stop publishing a host port for the smoke-test container
Deploy / deploy (push) Failing after 2m45s

The runner shares the host's Docker daemon across every repo's CI jobs, so
a hardcoded host port (8080) is a shared resource, not scoped to this job —
that's what was actually colliding, not a leftover vu-smoke container (the
previous fix's cleanup didn't help because the conflicting container wasn't
named vu-smoke at all). Curl the container's own bridge IP instead, so
nothing is published to the host and there's nothing to contend over.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-09 20:18:19 -04:00
parent e80a303101
commit 762b226a81
+9 -7
View File
@@ -28,17 +28,19 @@ jobs:
# served correctly under the /vu/ base path" — this is that check, # served correctly under the /vu/ base path" — this is that check,
# run against the exact image that ships. # run against the exact image that ships.
# #
# The shell runs with `-e`, so a failed curl/grep on a past run # The runner shares the host's Docker daemon, so a hardcoded host
# could skip `docker stop`/`rm` and leave vu-smoke bound to 8080, # port (this used to be -p 8080:80) is contended across every repo's
# blocking every run after it — clean up any leftover first, # CI on the same host, not scoped to this job — hence the previous
# unconditionally, rather than relying on the previous run's own # "port already allocated" failures even after cleaning up any
# cleanup having succeeded. # leftover vu-smoke container. Curl the container's own bridge IP
# instead, so no host port is published at all.
run: | run: |
docker rm -f vu-smoke 2>/dev/null || true docker rm -f vu-smoke 2>/dev/null || true
docker build -t vu:ci . docker build -t vu:ci .
docker run -d --name vu-smoke -p 8080:80 vu:ci docker run -d --name vu-smoke vu:ci
sleep 1 sleep 1
curl -sf http://localhost:8080/ | grep -q 'vu — Divine Office' container_ip=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' vu-smoke)
curl -sf "http://${container_ip}/" | grep -q 'vu — Divine Office'
docker stop vu-smoke docker stop vu-smoke
docker rm vu-smoke docker rm vu-smoke