# Shared infra image: gateway data plane + orchestrator control plane. # # Used directly by the Docker backend (run as one `bot-bottle-infra` # container, replacing the prior two-container split). The Firecracker # backend extends this via Dockerfile.infra.fc, adding buildah/crun/ # netavark for in-VM agent-image building. # # Dockerfile.orchestrator is the single definition of the orchestrator # content (the lean `bot_bottle` package on python:3.12-slim). Both this # image and Dockerfile.infra.fc pull it in via `COPY --from`. # # multi-`FROM` can't union two bases (that's multi-stage, not multiple # inheritance), so the orchestrator content is pulled in via `COPY --from` # rather than a second base. Both images share the trixie `python:3.12-slim` # base, so the copy is clean (same python; future installed deps copy too). FROM bot-bottle-gateway:latest # The orchestrator content, from its single definition. The gateway image # already has the flat daemon modules under /app; this adds the full # `bot_bottle` package so `python3 -m bot_bottle.orchestrator` resolves — # used by gateway_init when BOT_BOTTLE_GATEWAY_DAEMONS includes `orchestrator`. COPY --from=bot-bottle-orchestrator:latest /app/bot_bottle /app/bot_bottle