29 lines
736 B
Docker
29 lines
736 B
Docker
# Stage 1: Dependency resolution and production prune
|
|
FROM oven/bun:1-slim AS builder
|
|
WORKDIR /app
|
|
|
|
# Copy dependency manifests
|
|
COPY package.json bun.lock ./
|
|
|
|
# Install production dependencies only with strict lockfile
|
|
RUN bun install --frozen-lockfile --production
|
|
|
|
# Stage 2: Minimal runtime image
|
|
FROM oven/bun:1-slim AS runner
|
|
WORKDIR /app
|
|
|
|
ENV NODE_ENV=production
|
|
|
|
# Copy installed production node_modules from builder
|
|
COPY --chown=bun:bun --from=builder /app/node_modules ./node_modules
|
|
|
|
# Copy application configuration and source code
|
|
COPY --chown=bun:bun package.json tsconfig.json ./
|
|
COPY --chown=bun:bun src ./src
|
|
|
|
# Drop root privileges
|
|
USER bun
|
|
|
|
# Standard MCP stdio communication
|
|
ENTRYPOINT ["bun", "run", "src/index.ts"]
|