# 使用Node.js 20作为基础镜像 FROM node:20-alpine AS base # 安装pnpm和必要的工具 RUN npm install -g pnpm # 设置工作目录 WORKDIR /app # 复制package.json和pnpm-lock.yaml COPY package.json pnpm-lock.yaml ./ # 安装依赖 RUN pnpm install --frozen-lockfile # 复制源代码 COPY . . # 运行patch-ui-pro.zsh脚本 RUN chmod +x patch-ui-pro.zsh && ./patch-ui-pro.zsh # 构建阶段 FROM base AS builder # 构建应用 RUN pnpm build # 生产阶段 FROM node:20-alpine AS production # 安装pnpm RUN npm install -g pnpm # 设置工作目录 WORKDIR /app # 复制package.json和pnpm-lock.yaml COPY package.json pnpm-lock.yaml ./ # 只安装生产依赖 RUN pnpm install --frozen-lockfile --prod # 从构建阶段复制构建产物 COPY --from=builder /app/.nuxt ./.nuxt COPY --from=builder /app/.output ./.output # 暴露端口 EXPOSE 3000 # 设置环境变量 ENV NODE_ENV=production ENV HOST=0.0.0.0 ENV PORT=3000 # 启动应用 CMD ["node", ".output/server/index.mjs"]