fix: 修复 pnpm install 报 ERR_PNPM_IGNORED_BUILDS 导致 Docker 构建失败

- 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 国内源参数
This commit is contained in:
2026-09-09 00:04:57 +08:00
parent 425460fa28
commit d74a6704ec
2 changed files with 6 additions and 18 deletions
+6 -15
View File
@@ -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"]
CMD ["node", "server.js"]