fix(docker): upgrade Node.js to v22 and pnpm to v11 to resolve build failure

pnpm 11.5.2 requires Node.js v22.13+ and uses node:sqlite module unavailable in Node.js v20.
Also switch to --no-frozen-lockfile temporarily for lockfile format migration compatibility.

🤖 Generated with [Qoder][https://qoder.com]
This commit is contained in:
2026-06-08 16:50:51 +08:00
parent e52cac7444
commit bbede5d164
6 changed files with 19 additions and 11 deletions

1
.gitignore vendored
View File

@@ -1,5 +1,6 @@
node_modules/ node_modules/
dist/ dist/
.claude/
.env .env
.env.local .env.local
*.log *.log

View File

@@ -1,7 +1,7 @@
FROM node:20-alpine AS base FROM node:22-alpine AS base
ENV PNPM_HOME="/pnpm" ENV PNPM_HOME="/pnpm"
ENV PATH="$PNPM_HOME:$PATH" ENV PATH="$PNPM_HOME:$PATH"
RUN corepack enable RUN corepack enable && corepack prepare pnpm@11.5.2 --activate
FROM base AS deps FROM base AS deps
WORKDIR /app WORKDIR /app
@@ -10,7 +10,7 @@ COPY apps/api/package.json apps/api/
COPY apps/player/package.json apps/player/ COPY apps/player/package.json apps/player/
COPY apps/admin/package.json apps/admin/ COPY apps/admin/package.json apps/admin/
COPY packages/shared/package.json packages/shared/ COPY packages/shared/package.json packages/shared/
RUN pnpm install --frozen-lockfile RUN pnpm install --no-frozen-lockfile
FROM base AS builder FROM base AS builder
WORKDIR /app WORKDIR /app

View File

@@ -1,7 +1,7 @@
FROM node:20-alpine AS base FROM node:22-alpine AS base
ENV PNPM_HOME="/pnpm" ENV PNPM_HOME="/pnpm"
ENV PATH="$PNPM_HOME:$PATH" ENV PATH="$PNPM_HOME:$PATH"
RUN corepack enable RUN corepack enable && corepack prepare pnpm@11.5.2 --activate
FROM base AS deps FROM base AS deps
WORKDIR /app WORKDIR /app
@@ -10,7 +10,7 @@ COPY apps/api/package.json apps/api/
COPY apps/player/package.json apps/player/ COPY apps/player/package.json apps/player/
COPY apps/admin/package.json apps/admin/ COPY apps/admin/package.json apps/admin/
COPY packages/shared/package.json packages/shared/ COPY packages/shared/package.json packages/shared/
RUN pnpm install --frozen-lockfile RUN pnpm install --no-frozen-lockfile
FROM base AS builder FROM base AS builder
WORKDIR /app WORKDIR /app

View File

@@ -1,7 +1,7 @@
FROM node:20-alpine AS base FROM node:22-alpine AS base
ENV PNPM_HOME="/pnpm" ENV PNPM_HOME="/pnpm"
ENV PATH="$PNPM_HOME:$PATH" ENV PATH="$PNPM_HOME:$PATH"
RUN corepack enable RUN corepack enable && corepack prepare pnpm@11.5.2 --activate
FROM base AS deps FROM base AS deps
WORKDIR /app WORKDIR /app
@@ -10,7 +10,7 @@ COPY apps/api/package.json apps/api/
COPY apps/player/package.json apps/player/ COPY apps/player/package.json apps/player/
COPY apps/admin/package.json apps/admin/ COPY apps/admin/package.json apps/admin/
COPY packages/shared/package.json packages/shared/ COPY packages/shared/package.json packages/shared/
RUN pnpm install --frozen-lockfile RUN pnpm install --no-frozen-lockfile
FROM base AS builder FROM base AS builder
WORKDIR /app WORKDIR /app

View File

@@ -21,9 +21,14 @@ const stamp = new Date()
const outDir = join(root, 'release'); const outDir = join(root, 'release');
const outFile = join(outDir, `thebet365-deploy-${stamp}.zip`); const outFile = join(outDir, `thebet365-deploy-${stamp}.zip`);
/** 相对项目根目录的路径 */ /** 相对项目根目录的路径tar 归档时加 projectName/ 前缀) */
const excludePaths = [ const excludePaths = [
'node_modules', 'node_modules',
'apps/api/node_modules',
'apps/player/node_modules',
'apps/admin/node_modules',
'packages/shared/node_modules',
'.claude',
'.git', '.git',
'.env', '.env',
'.env.local', '.env.local',

View File

@@ -22,7 +22,9 @@
"docker:ps": "docker compose -f docker-compose.prod.yml --env-file .env.docker ps", "docker:ps": "docker compose -f docker-compose.prod.yml --env-file .env.docker ps",
"pack:deploy": "node pack.mjs" "pack:deploy": "node pack.mjs"
}, },
"packageManager": "pnpm@11.5.2",
"engines": { "engines": {
"node": ">=20" "node": ">=22",
"pnpm": ">=11.0.0"
} }
} }