|
@@ -1,4 +1,4 @@
|
|
|
-FROM node:18-slim AS build
|
|
|
+FROM node:16.12-alpine as build
|
|
|
|
|
|
# 设置工作目录和环境变量
|
|
|
WORKDIR /app/kpt-system-web
|
|
@@ -6,34 +6,16 @@ ENV NODE_OPTIONS="--max-old-space-size=4096"
|
|
|
ENV PNPM_HOME=/usr/local/bin
|
|
|
ENV VITE_USER_NODE_ENV=production
|
|
|
|
|
|
-# 安装系统依赖(改用 slim 镜像避免 Alpine 兼容性问题)
|
|
|
-RUN apt-get update && \
|
|
|
- apt-get install -y git python3 make g++ jq && \
|
|
|
- rm -rf /var/lib/apt/lists/*
|
|
|
-
|
|
|
-# 使用 Corepack 管理 PNPM
|
|
|
-RUN corepack enable && \
|
|
|
- corepack prepare pnpm@latest --activate
|
|
|
+COPY . .
|
|
|
|
|
|
-# 复制包管理文件(利用缓存层)
|
|
|
-COPY package.json pnpm-lock.yaml .npmrc ./
|
|
|
-COPY patches ./patches
|
|
|
-
|
|
|
-# 替换原有的安装和构建部分
|
|
|
-RUN pnpm install --shamefully-hoist && \
|
|
|
- pnpm add \
|
|
|
- vite@4.5.14 \
|
|
|
- vite-plugin-mock@2.9.8 \
|
|
|
- mockjs@1.1.0 \
|
|
|
- @antfu/install-pkg@0.1.1 \
|
|
|
- @iconify/utils@1.2.2 -D && \
|
|
|
- # 强制锁定模块系统
|
|
|
- jq '. + {"type": "commonjs"}' package.json > package.json.tmp && \
|
|
|
- mv package.json.tmp package.json && \
|
|
|
- # 清理缓存
|
|
|
- rm -rf node_modules .pnpm-store && \
|
|
|
- pnpm install --frozen-lockfile --ignore-scripts && \
|
|
|
- pnpm build
|
|
|
+# 安装系统依赖(改用 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
|