diff --git a/backend/Dockerfile b/backend/Dockerfile index 44a9f49..9619acc 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -6,12 +6,9 @@ WORKDIR /app # 允许所有包的 postinstall 脚本(Prisma/esbuild 需要) ENV NPM_CONFIG_IGNORE_SCRIPTS=false -# 复制依赖文件 -COPY package.json pnpm-lock.yaml ./ -COPY .npmrc ./ - -# 安装依赖(pnpm 会读取 .npmrc 中的 onlyBuiltDependencies) -RUN corepack enable && pnpm install --frozen-lockfile --config.onlyBuiltDependencies="@prisma/client,@prisma/engines,esbuild,prisma" +# 复制依赖和安装脚本 +COPY package.json pnpm-lock.yaml install.sh ./ +RUN chmod +x install.sh && ./install.sh # 复制 Prisma schema 并生成客户端 COPY prisma/ ./prisma/ diff --git a/backend/install.sh b/backend/install.sh new file mode 100644 index 0000000..e679632 --- /dev/null +++ b/backend/install.sh @@ -0,0 +1,10 @@ +#!/bin/sh +set -e + +corepack enable + +# 设置 pnpm 允许运行 postinstall 脚本的包 +pnpm config set onlyBuiltDependencies "@prisma/client @prisma/engines esbuild prisma" + +# 安装依赖 +pnpm install --frozen-lockfile