refactor: redesign Dockerfile to fix pnpm build scripts issue

This commit is contained in:
2026-05-19 17:10:17 +08:00
parent f3dadc0395
commit cf2d4f914a
2 changed files with 13 additions and 12 deletions

View File

@@ -1,4 +1 @@
onlyBuiltDependencies[]=@prisma/client
onlyBuiltDependencies[]=@prisma/engines
onlyBuiltDependencies[]=esbuild
onlyBuiltDependencies[]=prisma
onlyBuiltDependencies=@prisma/client,@prisma/engines,esbuild,prisma

View File

@@ -1,13 +1,19 @@
# Stage 1: 依赖安装 + 构建
FROM node:22-alpine AS builder
WORKDIR /app
COPY package.json pnpm-lock.yaml .npmrc ./
RUN corepack enable && pnpm install --allow-build=@prisma/client --allow-build=@prisma/engines --allow-build=esbuild --allow-build=prisma
# 允许所有包的 postinstall 脚本Prisma/esbuild 需要)
ENV NPM_CONFIG_IGNORE_SCRIPTS=false
# Prisma 客户端生成
# 复制依赖文件
COPY package.json pnpm-lock.yaml ./
COPY .npmrc ./
# 安装依赖pnpm 会读取 .npmrc 中的 onlyBuiltDependencies
RUN corepack enable && pnpm install --frozen-lockfile
# 复制 Prisma schema 并生成客户端
COPY prisma/ ./prisma/
RUN npx prisma generate
@@ -22,13 +28,11 @@ WORKDIR /app
ENV NODE_ENV=production
ENV NEXT_TELEMETRY_DISABLED=1
# Standalone output 包含所有必要运行时文件
# 复制 standalone 输出和静态资源
COPY --from=builder /app/.next/standalone ./
COPY --from=builder /app/.next/static ./.next/static
COPY --from=builder /app/public ./public
COPY --from=builder /app/prisma ./prisma
COPY --from=builder /app/node_modules/@prisma ./node_modules/@prisma
COPY --from=builder /app/node_modules/prisma ./node_modules/prisma
EXPOSE 3000