Dockerfile 853 B

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