57 lines
1.9 KiB
Docker
57 lines
1.9 KiB
Docker
# MCP Swagger Server - ARM64 离线 Docker 配置
|
|
# 构建命令: docker build -f Dockerfile.arm -t mcp-swagger-server:offline-arm .
|
|
# 导出镜像: docker save mcp-swagger-server:offline-arm -o mcp-swagger-server-arm.tar
|
|
# 离线导入: docker load -i mcp-swagger-server-arm.tar
|
|
|
|
# ARM64 基础镜像 - Google 多架构镜像
|
|
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
|
|
|
|
# 生产镜像 - Google 多架构镜像
|
|
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"]
|