codecontext Dockerfile and docker-compose adjustments for sidecar build. MCP example config cleanup (remove deprecated entries). pnpm-lock.yaml updated for new dependencies.
45 lines
1.9 KiB
Docker
45 lines
1.9 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 (pnpm project)
|
|
FROM node:20-alpine AS boocontext-builder
|
|
WORKDIR /build/boocontext
|
|
RUN apk add --no-cache git python3 make g++ ca-certificates
|
|
RUN npm install -g pnpm@9 --silent
|
|
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 pnpm install --frozen-lockfile && pnpm run build
|
|
|
|
# Stage 3: Runtime
|
|
FROM alpine:3.20
|
|
# uv intentionally not installed — container network blocks astral.sh.
|
|
# tree-sitter-analyzer child server (uvx) won't start in-container, but
|
|
# boocontext logs a graceful warning; TSA-backed tools fall through.
|
|
RUN apk add --no-cache ca-certificates nodejs
|
|
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"]
|