mcp-swagger-server/Dockerfile.arm

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"]