fix(smolmachines): mount git-gate files at boot via virtiofs staging dirs
Two issues caused krun_start_enter -22 (VM boot crash): 1. git-gate entrypoint missing at boot: sidecar_init.py starts all daemons (including git-gate) immediately as PID 1. The entrypoint was copied in via machine_cp which only runs after machine_start returns — too late. virtiofs also can't mount files at root (/). Fix: bake a static /git-gate-entrypoint.sh wrapper into the Dockerfile.sidecars image that delegates to /etc/git-gate/entrypoint.sh. For smolmachines, stage per-bottle scripts with correct in-VM names under the git-gate state dir and virtiofs-mount to /etc/git-gate/ at VM creation time. docker/macOS backends are unchanged (their file bind-mount/docker cp still overrides the static wrapper). 2. Egress confdir mounted read-only: egress_entrypoint.sh writes combined-trust.pem to confdir under set -e; mitmproxy also needs to write its per-host cert cache there. Both fail fatally on a read-only virtiofs mount. Fix: change the egress confdir virtiofs mount to writable. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+15
-3
@@ -14,9 +14,10 @@
|
||||
# /app/supervise_server.py + .py supervise MCP server
|
||||
# /app/sidecar_init.py PID 1 supervisor
|
||||
# /etc/egress/routes.yaml bind-mounted at run time
|
||||
# /etc/git-gate/pre-receive docker-cp'd at start time
|
||||
# /git-gate-entrypoint.sh docker-cp'd at start time
|
||||
# /git-gate/creds/* docker-cp'd at start time
|
||||
# /etc/git-gate/entrypoint.sh per-bottle (docker-cp or virtiofs mount)
|
||||
# /etc/git-gate/pre-receive per-bottle (docker-cp or virtiofs mount)
|
||||
# /git-gate-entrypoint.sh static wrapper → /etc/git-gate/entrypoint.sh
|
||||
# /git-gate/creds/* per-bottle (docker-cp or virtiofs mount)
|
||||
# /git/* bare repos, populated at runtime
|
||||
# /run/supervise/bot-bottle.db bind-mounted at run time
|
||||
# /home/mitmproxy/.mitmproxy/ mitmproxy CA dir
|
||||
@@ -90,6 +91,17 @@ RUN mkdir -p \
|
||||
/run/supervise \
|
||||
/home/mitmproxy/.mitmproxy
|
||||
|
||||
# Static wrapper for the git-gate entrypoint. The per-bottle
|
||||
# entrypoint script is either:
|
||||
# - docker-cp'd to /git-gate-entrypoint.sh (docker/macOS backends),
|
||||
# which overwrites this wrapper; or
|
||||
# - virtiofs-mounted at /etc/git-gate/entrypoint.sh (smolmachines),
|
||||
# where this wrapper delegates to it at runtime.
|
||||
# Either way sidecar_init.py calls `/bin/sh /git-gate-entrypoint.sh`.
|
||||
RUN printf '#!/bin/sh\nexec /etc/git-gate/entrypoint.sh "$@"\n' \
|
||||
> /git-gate-entrypoint.sh \
|
||||
&& chmod 755 /git-gate-entrypoint.sh
|
||||
|
||||
# Documentation only — the compose renderer publishes whichever
|
||||
# subset the bottle uses.
|
||||
EXPOSE 8888 9099 9418 9420 9100
|
||||
|
||||
Reference in New Issue
Block a user