FROM node:18-alpine AS builder WORKDIR /app # 安装 pnpm RUN npm install -g pnpm # 复制依赖文件 COPY package.json pnpm-lock.yaml ./ # 安装依赖 RUN pnpm install --frozen-lockfile # 复制源代码 COPY . . # 构建 RUN pnpm build # 生产阶段 FROM node:18-alpine WORKDIR /app # 安装必要工具 RUN apk add --no-cache wget && \ npm install -g serve # 复制构建产物 COPY --from=builder /app/dist ./dist # 使用非 root 用户 RUN chown -R node:node /app USER node EXPOSE 5500 HEALTHCHECK --interval=30s --timeout=10s --start-period=20s --retries=3 \ CMD wget --quiet --tries=1 --spider http://localhost:5500 || exit 1 CMD ["serve", "dist", "-p", "5500", "-s"]