FROM node:20-alpine as build # 设置工作目录和环境变量 WORKDIR /app/kpt-system-web ENV NODE_OPTIONS="--max-old-space-size=4096" ENV PNPM_HOME=/usr/local/bin ENV VITE_USER_NODE_ENV=production COPY . . # 安装系统依赖(改用 slim 镜像避免 Alpine 兼容性问题) RUN mkdir -p /root/.local/share/pnpm/store/v3/files && chown -R $(whoami) /root/.local/share/pnpm/store/v3/ RUN npm install -g pnpm@7 && npm install -g typescript@5.1.6 RUN echo "declare module 'lodash-es';" > types.d.ts RUN pnpm config set registry https://registry.npmmirror.com RUN pnpm update vue-demi@latest RUN pnpm install --fetch-timeout 60000 RUN pnpm build # 生产阶段 FROM nginx:alpine AS prod COPY --from=build /app/kpt-system-web/dist /usr/share/nginx/html COPY --from=build /app/kpt-system-web/nginx.conf /etc/nginx/conf.d/default.conf EXPOSE 80