From d74a6704ec19ca741674e063703522ed640cbdd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AF=92=E5=AF=92?= <2596194220@qq.com> Date: Wed, 9 Sep 2026 00:04:57 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20pnpm=20install=20?= =?UTF-8?q?=E6=8A=A5=20ERR=5FPNPM=5FIGNORED=5FBUILDS=20=E5=AF=BC=E8=87=B4?= =?UTF-8?q?=20Docker=20=E6=9E=84=E5=BB=BA=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - pnpm 11 在 CI 下将未批准的依赖构建脚本升级为硬错误(msw/sharp/unrs-resolver) - pnpm-workspace.yaml 用 allowBuilds 显式放行三个包(sharp 需下载原生二进制供 Next 图片优化使用),移除无效的 ignoredBuiltDependencies 与占位模板 - package.json 移除 pnpm 11 已不再读取的 pnpm.onlyBuiltDependencies 字段 - Dockerfile apk 镜像源改回 sed 替换方案(echo 方式引用的 ALPINE_VERSION 在容器内未定义,runner 阶段 apk add 会失败);保留 pnpm 国内源参数 --- Dockerfile | 21 ++++++--------------- pnpm-workspace.yaml | 3 --- 2 files changed, 6 insertions(+), 18 deletions(-) diff --git a/Dockerfile b/Dockerfile index 8624842..0f48d6a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,20 +1,18 @@ # Dockerfile for Recipe Translation Tool # Stage 1: Builder FROM node:22-alpine AS builder - WORKDIR /app -# 国内镜像加速 +# 国内 apk 镜像加速(sed 替换官方源域名,alpine 版本无关) RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories # 安装 pnpm(不使用 corepack) -RUN npm install -g pnpm +RUN npm install -g pnpm --registry=https://registry.npmmirror.com +RUN pnpm config set registry https://registry.npmmirror.com --global COPY package.json pnpm-lock.yaml ./ -# 设置国内镜像源 -RUN npm config set registry https://registry.npmmirror.com && \ - pnpm config set registry https://registry.npmmirror.com +# 构建脚本批准声明在 pnpm-workspace.yaml 的 allowBuilds(sharp/msw/unrs-resolver) # 安装依赖 RUN pnpm install --frozen-lockfile @@ -26,12 +24,10 @@ RUN pnpm build # Stage 2: Runner FROM node:22-alpine AS runner - WORKDIR /app - ENV NODE_ENV=production -# 国内镜像 +# 国内 apk 镜像 RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories # 创建用户 @@ -55,13 +51,8 @@ RUN chown -R nextjs:nodejs /app # 安装 git(版本检查、拉取更新)和 docker CLI(构建/重启容器) USER root RUN apk add --no-cache git docker-cli docker-compose -# 以 root 运行以确保有权限访问挂载的 Docker socket /var/run/docker.sock -# 若需以非 root 运行,需在宿主机上执行: -# sudo chmod 666 /var/run/docker.sock -# 或在容器入口脚本中动态匹配 socket 的 group GID EXPOSE 3000 ENV PORT=3000 ENV HOSTNAME="0.0.0.0" - -CMD ["node", "server.js"] \ No newline at end of file +CMD ["node", "server.js"] diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index e94965b..54b065b 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -2,6 +2,3 @@ allowBuilds: msw: true sharp: true unrs-resolver: true -ignoredBuiltDependencies: - - sharp - - unrs-resolver