fix(ci): smoke-test image from inside its container via docker exec #66

Merged
Latte merged 1 commits from fix/smoke-test-container-ip into dev 2026-07-05 11:46:34 +00:00

Summary

The docker / docker smoke-test job hung on homelab-runner-03: it booted the container fine (uid check passed) but then blocked probing the server over the network.

Root cause: the self-hosted runner executes each job step in a container that shares the host's Docker socket but sits on a different network. So the step can reach neither:

  • a published host port (docker run -p 18080:8080 lands the port on the runner host, not this step's netns), nor
  • the server container's bridge IP (different network → curl connect hangs, which is why the job looked stuck rather than failing fast).

Fix: probe from inside the server container with docker exec. It goes through the Docker socket and runs in the server's own netns, where 127.0.0.1:8080 always works regardless of runner topology. The image already ships python + httpx, so no curl or extra image pull is needed. The now-unnecessary -p publish is dropped.

Verified locally: build + boot + docker exec probes return /healthz 200, unauthenticated /mcp 401, and authenticated /mcp 200.

Test plan

  • docker build -f docker/Dockerfile succeeds
  • docker exec probes reproduce 200 / 401 / 200 locally
  • CI run on this PR (docker / docker) goes green on the self-hosted runner
## Summary The `docker / docker` smoke-test job hung on `homelab-runner-03`: it booted the container fine (uid check passed) but then blocked probing the server over the network. Root cause: the self-hosted runner executes each job step in a container that shares the host's Docker socket but sits on a **different network**. So the step can reach neither: - a **published host port** (`docker run -p 18080:8080` lands the port on the *runner host*, not this step's netns), nor - the server container's **bridge IP** (different network → `curl` connect hangs, which is why the job looked stuck rather than failing fast). Fix: probe from **inside** the server container with `docker exec`. It goes through the Docker socket and runs in the server's own netns, where `127.0.0.1:8080` always works regardless of runner topology. The image already ships `python` + `httpx`, so no `curl` or extra image pull is needed. The now-unnecessary `-p` publish is dropped. Verified locally: build + boot + `docker exec` probes return `/healthz` 200, unauthenticated `/mcp` 401, and authenticated `/mcp` 200. ## Test plan - [x] `docker build -f docker/Dockerfile` succeeds - [x] `docker exec` probes reproduce 200 / 401 / 200 locally - [ ] CI run on this PR (`docker / docker`) goes green on the self-hosted runner
Latte added 1 commit 2026-07-05 11:42:43 +00:00
fix(ci): smoke-test the image from inside its own container via docker exec
CI / lint (pull_request) Successful in 56s
docker / lint (pull_request) Successful in 54s
CI / test (pull_request) Successful in 1m2s
CI / publish (pull_request) Has been skipped
docker / test (pull_request) Successful in 57s
docker / docker (pull_request) Successful in 41s
945e40b5d8
The smoke test probed the server over the network, which fails on the
self-hosted runner: the job step runs in a container that shares the host
Docker socket but sits on a different network, so it can reach neither a
published host port (-p lands on the runner host) nor the server
container's bridge IP (different network → curl connect hangs, so the job
looked stuck rather than failing).

Probe from inside the server container with `docker exec` instead: it goes
through the Docker socket and runs in the server's own netns, where
127.0.0.1:8080 always works regardless of runner topology. The image ships
python + httpx, so no curl or extra image pull is needed. Drop the now
unnecessary -p publish.
Latte force-pushed fix/smoke-test-container-ip from 4acf683662 to 945e40b5d8 2026-07-05 11:42:43 +00:00 Compare
Ghost changed title from fix(ci): smoke-test image via bridge IP, not published host port to fix(ci): smoke-test image from inside its container via docker exec 2026-07-05 11:43:03 +00:00
Latte merged commit 733757f22a into dev 2026-07-05 11:46:34 +00:00
Latte deleted branch fix/smoke-test-container-ip 2026-07-05 11:46:35 +00:00
Sign in to join this conversation.
No Reviewers
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Hiddenden/familiar#66