Skip to content

[Quick Fix included] Docker build fails: pnpm@latest requires Node v22, image uses v20 #82

@Yanni-X

Description

@Yanni-X

Problem

docker compose up -d fails with:

docker compose up -d
[+] Running 0/2
 - spottransfer-backend Warning                                                                                                 1.6s
 - spottransfer-frontend Warning                                                                                                1.5s
[+] Building 16.8s (15/22)
 => [spottransfer-frontend:latest internal] load build definition from Dockerfile                                               0.0s
 => => transferring dockerfile: 843B                                                                                            0.0s
 => [spottransfer-backend:latest internal] load build definition from Dockerfile                                                0.0s
 => => transferring dockerfile: 999B                                                                                            0.0s
 => [spottransfer-frontend:latest internal] load metadata for docker.io/library/node:20-alpine                                  2.4s 
 => [spottransfer-backend:latest internal] load metadata for docker.io/library/python:3.12-slim                                 2.4s 
 => [spottransfer-frontend:latest internal] load .dockerignore                                                                  0.0s
 => => transferring context: 2B                                                                                                 0.0s 
 => [spottransfer-backend:latest internal] load .dockerignore                                                                   0.0s
 => => transferring context: 2B                                                                                                 0.0s 
 => [spottransfer-frontend:latest build 1/7] FROM docker.io/library/node:20-alpine@sha256:fb4cd12c85ee03686f6af5362a0b0d56d50c  9.3s 
 => => resolve docker.io/library/node:20-alpine@sha256:fb4cd12c85ee03686f6af5362a0b0d56d50c58a04632e6c0fb8363f609372293         0.1s 
 => => sha256:11cedc39e663e7c5d5cb9cc77a461a0d2adc25537b94e6831a6108f09cb2001b 6.52kB / 6.52kB                                  0.0s 
 => => sha256:6a0ac1617861a677b045b7ff88545213ec31c0ff08763195a70a4a5adda577bb 3.86MB / 3.86MB                                  0.6s 
 => => sha256:4feea04c154301db6f4a496efa397b3db96603b1c009c797cfdde77bea8b3287 43.23MB / 43.23MB                                7.8s 
 => => sha256:b2cbbfe903b0821005780971ddc5892edcc4ce74c5a48d82e1d2b382edac3122 1.26MB / 1.26MB                                  0.9s 
 => => sha256:fb4cd12c85ee03686f6af5362a0b0d56d50c58a04632e6c0fb8363f609372293 7.67kB / 7.67kB                                  0.0s 
 => => sha256:afdf98210b07b586eb71fa22ba2e432e058e4cd1304d31ed60888755b8c865fb 1.72kB / 1.72kB                                  0.0s 
 => => extracting sha256:6a0ac1617861a677b045b7ff88545213ec31c0ff08763195a70a4a5adda577bb                                       0.1s 
 => => sha256:fff4e2c1b189bf87d63ad8bd07f7f4eb288d6f2b6a07a8bb44c60e8c075d2096 445B / 445B                                      0.8s 
 => => extracting sha256:4feea04c154301db6f4a496efa397b3db96603b1c009c797cfdde77bea8b3287                                       1.1s 
 => => extracting sha256:b2cbbfe903b0821005780971ddc5892edcc4ce74c5a48d82e1d2b382edac3122                                       0.0s 
 => => extracting sha256:fff4e2c1b189bf87d63ad8bd07f7f4eb288d6f2b6a07a8bb44c60e8c075d2096                                       0.0s 
 => [spottransfer-frontend:latest internal] load build context                                                                  0.0s 
 => => transferring context: 1.92kB                                                                                             0.0s 
 => [spottransfer-backend:latest 1/6] FROM docker.io/library/python:3.12-slim@sha256:d764629ce0ddd8c71fd371e9901efb324a95789d  14.3s 
 => => resolve docker.io/library/python:3.12-slim@sha256:d764629ce0ddd8c71fd371e9901efb324a95789d2315a47db7e4d27e78f1b0e9       0.1s 
 => => sha256:d764629ce0ddd8c71fd371e9901efb324a95789d2315a47db7e4d27e78f1b0e9 10.37kB / 10.37kB                                0.0s 
 => => sha256:c2d8472b831337ab296a8ce652e1ba786e9e3034fc445dc58b50a7f5251f0003 1.75kB / 1.75kB                                  0.0s 
 => => sha256:2931a495646803fbd78108564c5d73260b6b75539aa7adc8283d038fb22cc66b 5.65kB / 5.65kB                                  0.0s 
 => => sha256:72c03230f1363a3fb61d2f98504cf168bad3fe22f511ad2005dc021515d7ce97 29.79MB / 29.79MB                               12.1s 
 => => sha256:6ec7f4e699d76dee8107525bf275ad5506fc96ae25aeaf21fbd1633853ed49a2 1.29MB / 1.29MB                                  1.5s 
 => => sha256:4b6b2afbcb1ea17577af7be93b9dfd8431a3e3a1dc834ede13df40147db94d77 12.11MB / 12.11MB                                4.9s 
 => => sha256:6dc8148c4b61cf7dd8cff2c6146ffb5855f3d0cc2770312e6795a8fd68072e02 249B / 249B                                      5.1s 
 => => extracting sha256:72c03230f1363a3fb61d2f98504cf168bad3fe22f511ad2005dc021515d7ce97                                       1.0s 
 => => extracting sha256:6ec7f4e699d76dee8107525bf275ad5506fc96ae25aeaf21fbd1633853ed49a2                                       0.1s 
 => => extracting sha256:4b6b2afbcb1ea17577af7be93b9dfd8431a3e3a1dc834ede13df40147db94d77                                       0.5s 
 => => extracting sha256:6dc8148c4b61cf7dd8cff2c6146ffb5855f3d0cc2770312e6795a8fd68072e02                                       0.0s 
 => [spottransfer-backend:latest internal] load build context                                                                   0.1s 
 => => transferring context: 280B                                                                                               0.0s 
 => [spottransfer-frontend:latest build 2/7] WORKDIR /app                                                                       0.2s 
 => [spottransfer-frontend:latest build 3/7] RUN corepack enable && corepack prepare pnpm@latest --activate                     3.8s 
 => [spottransfer-frontend:latest build 4/7] COPY package.json pnpm-lock.yaml ./                                                0.1s 
 => ERROR [spottransfer-frontend:latest build 5/7] RUN pnpm install --frozen-lockfile                                           0.8s 
 => [spottransfer-backend:latest 2/6] WORKDIR /app                                                                              0.1s 
------
 > [spottransfer-frontend:latest build 5/7] RUN pnpm install --frozen-lockfile:
#0 0.418 warn: This version of pnpm requires at least Node.js v22.13
#0 0.418 warn: The current version of Node.js is v20.20.2
#0 0.418 warn: Visit https://r.pnpm.io/comp to see the list of past pnpm versions with respective Node.js version support.
#0 0.700 node:internal/modules/cjs/loader:1031
#0 0.700       throw new ERR_UNKNOWN_BUILTIN_MODULE(request);
#0 0.700             ^
#0 0.700
#0 0.700 Error [ERR_UNKNOWN_BUILTIN_MODULE]: No such built-in module: node:sqlite
#0 0.700     at Module._load (node:internal/modules/cjs/loader:1031:13)
#0 0.700     at Module.require (node:internal/modules/cjs/loader:1289:19)
#0 0.700     at require (node:internal/modules/helpers:182:18)
#0 0.700     at ../store/index/lib/index.js (file:///root/.cache/node/corepack/v1/pnpm/11.7.0/dist/pnpm.mjs:54379:25)
#0 0.700     at __init (file:///root/.cache/node/corepack/v1/pnpm/11.7.0/dist/pnpm.mjs:17:58)
#0 0.700     at ../resolving/npm-resolver/lib/index.js (file:///root/.cache/node/corepack/v1/pnpm/11.7.0/dist/pnpm.mjs:65323:5)      
#0 0.700     at __init (file:///root/.cache/node/corepack/v1/pnpm/11.7.0/dist/pnpm.mjs:17:58)
#0 0.700     at ../workspace/projects-graph/lib/index.js (file:///root/.cache/node/corepack/v1/pnpm/11.7.0/dist/pnpm.mjs:65461:5)    
#0 0.700     at __init (file:///root/.cache/node/corepack/v1/pnpm/11.7.0/dist/pnpm.mjs:17:58)
#0 0.700     at ../workspace/projects-filter/lib/index.js (file:///root/.cache/node/corepack/v1/pnpm/11.7.0/dist/pnpm.mjs:72968:5) { 
#0 0.700   code: 'ERR_UNKNOWN_BUILTIN_MODULE'
#0 0.700 }
#0 0.700
#0 0.700 Node.js v20.20.2
------
failed to solve: process "/bin/sh -c pnpm install --frozen-lockfile" did not complete successfully: exit code: 1

Root cause

The frontend Dockerfile uses corepack prepare pnpm@latest --activate, which recently resolved to pnpm 11.7.0. This version requires Node ≥22.13, but the image uses node:20-alpine (Node 20.20.2).

Solution

Pin pnpm to v9, which matches pnpm-lock.yaml lockfileVersion 9.0 and is compatible with Node 20:

frontend/Dockerfile, Line 7

# Previously: RUN corepack enable && corepack prepare pnpm@latest --activate
# Fix:
RUN corepack enable && corepack prepare pnpm@9 --activate

Notes

Alternatives:

  • could add "packageManager": "pnpm@9.x.x" to package.json
  • Could update

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions