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