trilium/apps/server/docker
Elian Doran 7a92b326d0
fix(docker): pin the legacy image to the last pnpm that runs on 32-bit ARM
Moving off bullseye got the apt layers through on both legacy platforms,
and the builder stage then failed one layer later:

  ! Corepack is about to download .../pnpm-12.3.4.tgz
  Error: Cannot find module '/root/.cache/node/corepack/v1/pnpm/12.3.4/bin/pnpm.cjs'

This is not a stale corepack. pnpm 12 dropped its JavaScript
implementation and now ships as native executables, pulled in through
optional dependencies:

  linux-x64   linux-arm64   linux-x64-musl   linux-arm64-musl
  win32-x64   win32-arm64   darwin-x64       darwin-arm64

There is no 32-bit ARM target, so no corepack can help linux/arm/v7:
there is nothing for it to run. The 11.26.0 tarball is 5.1 MB and
carries a 13.9 MB dist/pnpm.mjs; the 12.3.4 tarball is 980 kB, its
largest file is its own changelog, and what remains under dist/ is
node-gyp and tar support beside an install.js that fetches the binary.
engines.node is >=18.*, so Node 22 was never the constraint here.

linux/arm/v8 normalizes to arm64, where @pnpm/exe.linux-arm64 exists and
matches bookworm's glibc, so that leg could run pnpm 12 given a newer
corepack. One packageManager field serves both legs, and 11.26.0 wants
Node >=22.13 against the image's 22.21.0, so pinning covers both. The
pin stays contained because Dockerfile.legacy copies only
./docker/package.json: the root monorepo keeps pnpm 12, whose CI only
ever runs on x64 and arm64.

renovate.json already ignores apps/server/Dockerfile.legacy but not this
manifest, which is how pnpm 12 arrived on Sept 6. Adding the path to
ignorePaths would also freeze better-sqlite3 there, so the guard is a
rule scoped to pnpm alone.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-10 19:26:43 +02:00
..
authelia test(oauth): add a second Authelia user to verify per-account binding 2026-06-18 13:54:23 +03:00
nginx-proxy-manager chore(server): add infrastructure for running Nginx Proxy Manager 2026-03-08 09:01:47 +02:00
traefik docs(server/proxy): breaking change in Traefik 3.6.4 2025-12-06 21:51:56 +02:00
nginx.conf chore(server): make the subdir Nginx proxy reachable on Docker Desktop 2026-08-18 18:46:57 +03:00
package.json fix(docker): pin the legacy image to the last pnpm that runs on 32-bit ARM 2026-09-10 19:26:43 +02:00
pnpm-workspace.yaml fix(docker): not building after dependency update 2026-05-19 20:42:34 +03:00