Dockerfile.localβ’1.93 kB
# Dockerfile for MCP Debugger Server - Local Build (Submodule)
# Builds from source within the submodule context
FROM node:18-alpine AS builder
# Install build dependencies
RUN apk add --no-cache python3 make g++
# Set working directory
WORKDIR /build
# Copy package files
COPY package.json yarn.lock* ./
COPY tsconfig*.json ./
# Install dependencies
RUN corepack enable && yarn install --frozen-lockfile
# Copy source code
COPY src ./src
# Build the project
RUN yarn build
# Production stage
FROM node:18-alpine
# Install runtime dependencies
RUN apk add --no-cache tini
# Create non-root user for security
RUN addgroup -g 1001 -S mcp && \
adduser -u 1001 -S mcp -G mcp
# Set working directory
WORKDIR /app
# Copy built files and dependencies from builder
COPY --from=builder /build/dist ./dist
COPY --from=builder /build/package.json ./
COPY --from=builder /build/node_modules ./node_modules
# Set environment variables
ENV NODE_ENV=production \
LOG_LEVEL=info
# Switch to non-root user
USER mcp
# Use tini as init system for proper signal handling
ENTRYPOINT ["/sbin/tini", "--"]
# Run the MCP server
CMD ["node", "dist/src/cli.js"]
# Health check
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
CMD node -e "process.exit(0)" || exit 1
# Labels for metadata
LABEL org.opencontainers.image.title="MCP Debugger Server" \
org.opencontainers.image.description="Enterprise-grade MCP server for Node.js and TypeScript debugging" \
org.opencontainers.image.version="1.1.7" \
org.opencontainers.image.vendor="Digital Defiance" \
org.opencontainers.image.authors="Jessica Mulein <jessica@digitaldefiance.org>" \
org.opencontainers.image.url="https://github.com/digital-defiance/ai-capabilities-suite" \
org.opencontainers.image.source="https://github.com/digital-defiance/ai-capabilities-suite" \
org.opencontainers.image.licenses="MIT"