diff --git a/Dockerfile b/Dockerfile index 1675988..3a46a9c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -18,9 +18,10 @@ # Adding a production dependency with native bindings breaks that assumption # silently — the image would ship the builder's architecture. Such a dependency # has to be installed on $TARGETPLATFORM instead, emulation and all. -FROM --platform=$BUILDPLATFORM node:24-alpine@sha256:06d7adf3e0ef61a13f1d28682726366f97a15aa1888c934d3ecec86c33918b53 AS builder +FROM --platform=$BUILDPLATFORM node:26-alpine@sha256:c6ad9e9c1d80f6eb607c26b4b0a132ff7a2344fad1c78ea3baa2a7d4c8de6d94 AS builder WORKDIR /app -RUN corepack enable +# Node 25+ images no longer bundle corepack, so install it from npm. +RUN npm install -g corepack@0.36.0 && corepack enable # HUSKY=0 disables the `prepare` hook: git hooks are a developer-machine # concern, and .husky/ is not part of the build context. ENV HUSKY=0 @@ -39,10 +40,11 @@ RUN pnpm run build # installs git hooks for developers cannot run here — and an install whose # scripts may fetch architecture-specific binaries would defeat the # build-platform reasoning above. -FROM --platform=$BUILDPLATFORM node:24-alpine@sha256:06d7adf3e0ef61a13f1d28682726366f97a15aa1888c934d3ecec86c33918b53 AS deps +FROM --platform=$BUILDPLATFORM node:26-alpine@sha256:c6ad9e9c1d80f6eb607c26b4b0a132ff7a2344fad1c78ea3baa2a7d4c8de6d94 AS deps WORKDIR /app ENV HUSKY=0 -RUN corepack enable +# Node 25+ images no longer bundle corepack, so install it from npm. +RUN npm install -g corepack@0.36.0 && corepack enable COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./ RUN pnpm install --prod --frozen-lockfile --ignore-scripts @@ -50,7 +52,7 @@ RUN pnpm install --prod --frozen-lockfile --ignore-scripts # nothing: it copies what the stages above produced. That keeps QEMU out of the # multi-platform build entirely, and leaves neither pnpm nor its # content-addressable store in the image the way an install here would. -FROM node:24-alpine@sha256:06d7adf3e0ef61a13f1d28682726366f97a15aa1888c934d3ecec86c33918b53 AS runner +FROM node:26-alpine@sha256:c6ad9e9c1d80f6eb607c26b4b0a132ff7a2344fad1c78ea3baa2a7d4c8de6d94 AS runner WORKDIR /app ENV NODE_ENV=production ENV PORT=3000