# 构建 Vue 静态文件。CI 通过构建参数切换到内网基础镜像, # 本地开发仍可使用 Docker Hub 默认值。 ARG NODE_IMAGE=node:22-alpine ARG NGINX_IMAGE=nginx:1.27-alpine FROM ${NODE_IMAGE} AS build WORKDIR /app # Corepack 与 pnpm 依赖均通过 npmmirror 下载,避免构建时访问 npm 官方源过慢。 ENV COREPACK_NPM_REGISTRY=https://registry.npmmirror.com ENV NPM_CONFIG_REGISTRY=https://registry.npmmirror.com RUN corepack enable COPY package.json pnpm-lock.yaml ./ COPY shared/package.json ./shared/package.json # package.json 和 lock 文件未变化时,这一层会由 Docker 自动复用。 RUN pnpm config set registry https://registry.npmmirror.com && \ pnpm install --frozen-lockfile COPY . . ARG VITE_ADMIN_WEB_ORIGIN ENV VITE_ADMIN_WEB_ORIGIN=${VITE_ADMIN_WEB_ORIGIN} RUN pnpm build # 运行阶段仅保留构建产物与 Nginx。 FROM ${NGINX_IMAGE} COPY nginx/default.conf.template /etc/nginx/templates/default.conf.template COPY --from=build /app/dist /usr/share/nginx/html EXPOSE 80