From daf90b11276d7f40e2fca40484720ceb1c3773f7 Mon Sep 17 00:00:00 2001 From: Vadym Samoilenko Date: Wed, 13 May 2026 18:20:33 +0100 Subject: [PATCH] fix(migrator): node:22 + NODE_OPTIONS tsx/esm for ESM bare specifier resolution Co-Authored-By: Claude Sonnet 4.6 --- Dockerfile.migrator | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Dockerfile.migrator b/Dockerfile.migrator index d237452..35ed286 100644 --- a/Dockerfile.migrator +++ b/Dockerfile.migrator @@ -1,7 +1,10 @@ # syntax=docker/dockerfile:1 -# Migrator image: node:20 + full source + pnpm for `pnpm payload migrate` and `pnpm payload migrate:create` +# Migrator image — runs `payload migrate` / `payload migrate:create` +# Requires node:22 for pnpm 11 (node:sqlite). +# tsx 4.x ESM loader must be preloaded via NODE_OPTIONS so bare +# specifiers (.ts extensions) resolve before any module is imported. -FROM node:20-alpine AS base +FROM node:22-alpine AS base RUN corepack enable && corepack prepare pnpm@latest --activate WORKDIR /app @@ -10,5 +13,6 @@ RUN pnpm install --frozen-lockfile COPY . . +ENV NODE_OPTIONS="--import tsx/esm" ENTRYPOINT ["pnpm", "payload"] CMD ["migrate"]