mcp-swagger-server/Dockerfile

57 lines
1.8 KiB
Docker

# MCP Swagger Server - 离线友好 Docker 配置
# 构建命令: docker build -t mcp-swagger-server:offline .
# 导出镜像: docker save mcp-swagger-server:offline -o mcp-swagger-server.tar
# 离线导入: docker load -i mcp-swagger-server.tar
# 使用 Google Cloud 镜像源
FROM mirror.gcr.io/library/node:20-alpine AS builder
WORKDIR /app
RUN corepack enable
COPY pnpm-workspace.yaml ./
COPY package.json ./
COPY pnpm-lock.yaml ./
COPY packages/mcp-swagger-server/package.json ./packages/mcp-swagger-server/
COPY packages/mcp-swagger-parser/package.json ./packages/mcp-swagger-parser/
RUN pnpm install --frozen-lockfile
COPY packages/mcp-swagger-server ./packages/mcp-swagger-server
COPY packages/mcp-swagger-parser ./packages/mcp-swagger-parser
RUN pnpm install
RUN pnpm --filter mcp-swagger-server build
# 生产镜像
FROM mirror.gcr.io/library/node:20-alpine AS production
WORKDIR /app
RUN corepack enable && \
apk add --no-cache dumb-init
COPY --from=builder /app/package.json /app/pnpm-lock.yaml /app/pnpm-workspace.yaml ./
COPY --from=builder /app/packages/mcp-swagger-server/package.json /app/packages/mcp-swagger-server/
COPY --from=builder /app/packages/mcp-swagger-parser/package.json /app/packages/mcp-swagger-parser/
RUN pnpm install --frozen-lockfile --prod
COPY --from=builder /app/packages/mcp-swagger-server/dist ./packages/mcp-swagger-server/dist
COPY --from=builder /app/packages/mcp-swagger-parser/dist ./packages/mcp-swagger-parser/dist
COPY scripts/multi-mss.js ./scripts/multi-mss.js
COPY scripts/docker-mcp-manager.js ./scripts/docker-mcp-manager.js
RUN echo '# OpenAPI 服务配置\n# 每行一个 URL 或本地文件路径' > /app/openapis.txt
RUN addgroup -g 1001 -S nodejs && \
adduser -S mcp -u 1001 && \
chown -R mcp:nodejs /app
USER mcp
ENTRYPOINT ["dumb-init", "--", "node", "scripts/docker-mcp-manager.js"]