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:
+5
-14
@@ -1,20 +1,18 @@
|
|||||||
# Dockerfile for Recipe Translation Tool
|
# Dockerfile for Recipe Translation Tool
|
||||||
# Stage 1: Builder
|
# Stage 1: Builder
|
||||||
FROM node:22-alpine AS builder
|
FROM node:22-alpine AS builder
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
# 国内镜像加速
|
# 国内 apk 镜像加速(sed 替换官方源域名,alpine 版本无关)
|
||||||
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
|
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
|
||||||
|
|
||||||
# 安装 pnpm(不使用 corepack)
|
# 安装 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 ./
|
COPY package.json pnpm-lock.yaml ./
|
||||||
|
|
||||||
# 设置国内镜像源
|
# 构建脚本批准声明在 pnpm-workspace.yaml 的 allowBuilds(sharp/msw/unrs-resolver)
|
||||||
RUN npm config set registry https://registry.npmmirror.com && \
|
|
||||||
pnpm config set registry https://registry.npmmirror.com
|
|
||||||
|
|
||||||
# 安装依赖
|
# 安装依赖
|
||||||
RUN pnpm install --frozen-lockfile
|
RUN pnpm install --frozen-lockfile
|
||||||
@@ -26,12 +24,10 @@ RUN pnpm build
|
|||||||
|
|
||||||
# Stage 2: Runner
|
# Stage 2: Runner
|
||||||
FROM node:22-alpine AS runner
|
FROM node:22-alpine AS runner
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
ENV NODE_ENV=production
|
ENV NODE_ENV=production
|
||||||
|
|
||||||
# 国内镜像
|
# 国内 apk 镜像
|
||||||
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
|
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(构建/重启容器)
|
# 安装 git(版本检查、拉取更新)和 docker CLI(构建/重启容器)
|
||||||
USER root
|
USER root
|
||||||
RUN apk add --no-cache git docker-cli docker-compose
|
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
|
EXPOSE 3000
|
||||||
ENV PORT=3000
|
ENV PORT=3000
|
||||||
ENV HOSTNAME="0.0.0.0"
|
ENV HOSTNAME="0.0.0.0"
|
||||||
|
|
||||||
CMD ["node", "server.js"]
|
CMD ["node", "server.js"]
|
||||||
@@ -2,6 +2,3 @@ allowBuilds:
|
|||||||
msw: true
|
msw: true
|
||||||
sharp: true
|
sharp: true
|
||||||
unrs-resolver: true
|
unrs-resolver: true
|
||||||
ignoredBuiltDependencies:
|
|
||||||
- sharp
|
|
||||||
- unrs-resolver
|
|
||||||
|
|||||||
Reference in New Issue
Block a user