# v2.8 — boocontext sidecar container. # Multi-stage build: Go shim from golang:1.24-alpine, boocontext MCP aggregator # from node:20-alpine, then an alpine:3.20 runtime holding both. # # The shim spawns boocontext as a child MCP process over stdio NDJSON, # translating HTTP requests to MCP tools/call. # # To stage the fork source for a Docker build: # tar -czf codecontext/fork.tar.gz -C /opt/forks/boocontext \ # --exclude=.git --exclude=node_modules --exclude=dist # Stage 1: Go shim builder FROM golang:1.24-alpine AS shim-builder WORKDIR /build/shim RUN apk add --no-cache ca-certificates COPY go.mod ./ COPY shim.go ./ RUN CGO_ENABLED=0 GOOS=linux go build -o /build/shim-bin ./ # Stage 2: boocontext MCP builder FROM node:20-alpine AS boocontext-builder WORKDIR /build/boocontext RUN apk add --no-cache git python3 make g++ ca-certificates COPY fork.tar.gz /build/fork.tar.gz RUN mkdir -p /build/boocontext && tar -xzf /build/fork.tar.gz -C /build/boocontext WORKDIR /build/boocontext RUN npm ci && npm run build # Stage 3: Runtime FROM alpine:3.20 RUN apk add --no-cache ca-certificates nodejs uv COPY --from=shim-builder /build/shim-bin /usr/local/bin/shim COPY --from=boocontext-builder /build/boocontext/dist /usr/local/lib/boocontext/dist COPY --from=boocontext-builder /build/boocontext/node_modules /usr/local/lib/boocontext/node_modules COPY --from=boocontext-builder /build/boocontext/package.json /usr/local/lib/boocontext/package.json EXPOSE 8080 HEALTHCHECK --interval=30s --timeout=5s --start-period=30s \ CMD wget -qO- http://localhost:8080/health || exit 1 ENTRYPOINT ["/usr/local/bin/shim"]