build-flow.web/Dockerfile
xiangning db75b964cd perf(docker): npm 源走阿里 npmmirror,避免 registry.npmjs.org 不稳
pnpm install 前设 registry=https://registry.npmmirror.com,
解决 web 构建时 npm 包 error(23)/拉取超时。
2026-07-17 13:21:41 +08:00

37 lines
1.6 KiB
Docker
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# BuildFlow Web (web-antdv-next / @vben/web-antdv-next) 多阶段构建
# 第一阶段:Node 22 构建 SPA 产物;第二阶段:Nginx 托管静态资源
# base 镜像走 Harbor Proxy Cache(dockerhub-proxy → docker.io),避免公网拉取超时
FROM 43.134.235.58:58080/dockerhub-proxy/library/node:22-alpine AS builder
WORKDIR /app
# 全局装 pnpm(与本地 11.x 对齐;corepack 在 alpine 上不可靠)
RUN npm install -g pnpm@11
# npm 包源走阿里 npmmirror(国内最稳,避免 registry.npmjs.org 拉取 error 23)
RUN pnpm config set registry https://registry.npmmirror.com
# 先拷依赖清单利用层缓存(pnpm workspace + turbo 需要这些清单文件齐备)
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml turbo.json ./
COPY internal/ ./internal/
COPY scripts/ ./scripts/
COPY apps/web-antdv-next/package.json ./apps/web-antdv-next/package.json
# 拷贝其余 packages 的 package.json(workspace 依赖解析需要),但不拷 node_modules
COPY packages/ ./packages/
RUN pnpm install --frozen-lockfile
# 拷贝全部源码
COPY . .
# 构建 web-antdv-next 变体(turbo 按 workspace 名过滤;质量门禁内含 typecheck)
RUN pnpm run build --filter=@vben/web-antdv-next...
# ---- 运行阶段:Nginx 托管静态资源 ----
FROM 43.134.235.58:58080/dockerhub-proxy/library/nginx:1.27-alpine AS runtime
COPY apps/web-antdv-next/nginx.conf /etc/nginx/conf.d/default.conf
COPY --from=builder /app/apps/web-antdv-next/dist /usr/share/nginx/html
EXPOSE 80
HEALTHCHECK --interval=30s --timeout=3s --retries=3 CMD wget -q --spider http://127.0.0.1/ || exit 1
CMD ["nginx", "-g", "daemon off;"]