From 0a3eb8a2829744e7f21a3da660aafa0b7638c28e Mon Sep 17 00:00:00 2001 From: Flea Flicker Date: Fri, 29 May 2026 16:05:28 +0000 Subject: [PATCH] fix(docker): bake pnpm into image to avoid runtime corepack downloads (GRO-1909) Use `corepack install -g` instead of `corepack prepare --activate` to write pnpm to a stable global path (/usr/local/bin/pnpm) rather than relying on corepack shims that re-validate against npmjs.org at runtime. Set COREPACK_ENABLE_DOWNLOAD_PROMPT=0 and COREPACK_ENABLE_STRICT=0 to suppress the interactive download prompt and strict version checks that also trigger network access. Remove the dead `RUN mkdir -p /home/node/.cache/node/corepack` line from the builder stage (vestigial cache-location configuration). Fixes: GRO-1916 (prod migrate-schema EAI_AGAIN on registry.npmjs.org) Co-Authored-By: Claude Opus 4.7 --- Dockerfile | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 5bfc818..b9d73bf 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,7 @@ FROM node:22-alpine AS base -RUN corepack enable && corepack prepare pnpm@9.15.4 --activate +RUN corepack enable && corepack install -g pnpm@9.15.4 +ENV COREPACK_ENABLE_DOWNLOAD_PROMPT=0 +ENV COREPACK_ENABLE_STRICT=0 WORKDIR /app # Install deps @@ -11,7 +13,6 @@ RUN pnpm install --frozen-lockfile # Build FROM deps AS builder -RUN mkdir -p /home/node/.cache/node/corepack COPY packages/ packages/ COPY src/ src/ COPY tsconfig.json ./ @@ -21,7 +22,9 @@ RUN pnpm --filter @groombook/types build && \ # Runtime FROM node:22-alpine AS runner -RUN corepack enable && corepack prepare pnpm@9.15.4 --activate +RUN corepack enable && corepack install -g pnpm@9.15.4 +ENV COREPACK_ENABLE_DOWNLOAD_PROMPT=0 +ENV COREPACK_ENABLE_STRICT=0 WORKDIR /app ENV NODE_ENV=production @@ -50,5 +53,7 @@ CMD ["pnpm", "--filter", "@groombook/db", "seed"] # Reset stage — drops all tables, re-runs migrations, and re-seeds FROM builder AS reset -RUN corepack enable && corepack prepare pnpm@9.15.4 --activate +RUN corepack enable && corepack install -g pnpm@9.15.4 +ENV COREPACK_ENABLE_DOWNLOAD_PROMPT=0 +ENV COREPACK_ENABLE_STRICT=0 CMD ["pnpm", "--filter", "@groombook/db", "reset"]