# 在 Linux 内安装依赖和生成 Prisma 客户端,不能复用开发机的 node_modules。 FROM node:24.20.0-bookworm-slim AS base # 按构建网络选择 npm 源;不修改开发机配置,也不改变锁定依赖版本。 ARG NPM_REGISTRY=https://registry.npmjs.org RUN apt-get update \ && apt-get install -y --no-install-recommends ca-certificates openssl \ && rm -rf /var/lib/apt/lists/* \ && npm install --global pnpm@11.24.0 --registry="${NPM_REGISTRY}" WORKDIR /app FROM base AS build COPY . . RUN pnpm install --frozen-lockfile --filter @doodle/server... --registry="${NPM_REGISTRY}" RUN pnpm --filter @doodle/server... run build FROM base AS runtime ENV NODE_ENV=production HOST=0.0.0.0 PORT=8800 # 首版保留构建依赖及 Prisma CLI,允许用同一版本镜像执行独立迁移任务。 # 后续优化镜像体积时应拆分 migrator,不能直接删掉迁移命令所需的依赖。 COPY --from=build --chown=node:node /app /app USER node EXPOSE 8800 CMD ["node", "apps/server/dist/main.js"]