- Multi-stage Dockerfile builds boocontext (Node) + HTTP shim (Go) - shim.go supports CODECONTEXT_CHILD env var for configurable MCP child - Adds routes for get_symbol_details, get_call_graph, get_blast_radius - docker-compose.yml adds env vars for child MCP paths
41 lines
1.6 KiB
Docker
41 lines
1.6 KiB
Docker
# 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"]
|