# ================================ # 第一步:构建阶段 # ================================ FROM cimg/node:22.15.1 AS builder # 设置国内 npm 镜像加速 RUN npm config set registry https://registry.npmmirror.com/ # 切换为 root 用户安装 pnpm USER root # 如果你使用 pnpm,则安装 pnpm RUN corepack enable && corepack prepare pnpm@latest --activate # 切回默认用户 circleci(cimg 镜像默认非 root 用户) USER circleci # WORKDIR /app # 先复制依赖清单,利用 Docker 缓存 COPY package.json ./ # 如果你没有 pnpm-lock.yaml,使用 npm 的 package-lock.json COPY package-lock.json ./ # COPY package-lock.json ./ # 如果你用的是 npm # 安装依赖 RUN pnpm install # 再复制源码 # COPY . . # 进行构建(适用于 Astro、Next.js、Vite 等项目) RUN pnpm build # ================================ # 第二步:运行阶段(只保留 dist) # ================================ FROM cimg/node:22.15.1 # 设置国内 npm 镜像(可选) RUN npm config set registry https://registry.npmmirror.com/ # WORKDIR /app # 只复制构建产物和依赖 # COPY --from=builder /app . # 启动 SSR 项目(Astro SSR 情况) # CMD ["node", "dist/server/entry.mjs"]