From 00fd0eb4c8a6d20d1b35948866495ce3bbca3f90 Mon Sep 17 00:00:00 2001 From: Konstantin Wohlwend Date: Mon, 9 Mar 2026 10:06:14 -0700 Subject: [PATCH] Revert Docker build fix --- apps/backend/scripts/db-migrations.tsdown.config.ts | 12 ++++++++++-- docker/server/Dockerfile | 8 -------- .../stack-shared/src/interface/server-interface.ts | 4 ++-- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/apps/backend/scripts/db-migrations.tsdown.config.ts b/apps/backend/scripts/db-migrations.tsdown.config.ts index 8bf48369b..74d3326b3 100644 --- a/apps/backend/scripts/db-migrations.tsdown.config.ts +++ b/apps/backend/scripts/db-migrations.tsdown.config.ts @@ -1,3 +1,4 @@ +import { readFileSync } from 'node:fs'; import { builtinModules } from 'node:module'; import { dirname, resolve } from 'node:path'; import { fileURLToPath } from 'node:url'; @@ -9,11 +10,19 @@ const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); const backendDir = resolve(__dirname, '..'); +const packageJson = JSON.parse(readFileSync(resolve(backendDir, 'package.json'), 'utf-8')); + // Packages that must remain as runtime imports (can't be statically bundled) const externalPackages = [ '@prisma/client', ]; +const customNoExternal = new Set([ + ...Object.keys(packageJson.dependencies).filter( + (dep) => !externalPackages.some((ext) => dep === ext || dep.startsWith(ext + '/')) + ), +]); + // Node.js built-in modules that should not be bundled const nodeBuiltins = builtinModules.flatMap((m) => [m, `node:${m}`]); @@ -25,8 +34,7 @@ export default defineConfig({ outDir: resolve(backendDir, 'dist'), target: 'node22', platform: 'node', - // Bundle all non-Node modules into the migration artifact, except Prisma runtime. - noExternal: true, + noExternal: [...customNoExternal], inlineOnly: false, // Externalize Node.js builtins so they're imported rather than shimmed external: [...nodeBuiltins, ...externalPackages], diff --git a/docker/server/Dockerfile b/docker/server/Dockerfile index 650179318..756348ce4 100644 --- a/docker/server/Dockerfile +++ b/docker/server/Dockerfile @@ -75,14 +75,6 @@ COPY --from=builder --chown=node:node /app/apps/backend/.next/standalone ./ COPY --from=builder --chown=node:node /app/apps/backend/.next/static ./apps/backend/.next/static COPY --from=builder --chown=node:node /app/apps/backend/prisma ./apps/backend/prisma COPY --from=builder --chown=node:node /app/apps/backend/dist ./apps/backend/dist -COPY --from=builder --chown=node:node /app/node_modules ./node_modules -COPY --from=builder --chown=node:node /app/packages/stack-shared ./node_modules/@stackframe/stack-shared - -# prisma runtime modules are present in pnpm's virtual store; expose @prisma/client for Node resolution -RUN set -e && \ - mkdir -p /app/node_modules/@prisma && \ - PRISMA_CLIENT_DIR=$(ls -d /app/node_modules/.pnpm/@prisma+client@*/node_modules/@prisma/client | head -n 1) && \ - ln -s "$PRISMA_CLIENT_DIR" /app/node_modules/@prisma/client # Copy built dashboard COPY --from=builder --chown=node:node /app/apps/dashboard/.next/standalone ./ diff --git a/packages/stack-shared/src/interface/server-interface.ts b/packages/stack-shared/src/interface/server-interface.ts index 839e09c6d..da7074745 100644 --- a/packages/stack-shared/src/interface/server-interface.ts +++ b/packages/stack-shared/src/interface/server-interface.ts @@ -8,8 +8,8 @@ import { filterUndefined } from "../utils/objects"; import { Result } from "../utils/results"; import { urlString } from "../utils/urls"; import { - ClientInterfaceOptions, - StackClientInterface + ClientInterfaceOptions, + StackClientInterface } from "./client-interface"; import { ConnectedAccountAccessTokenCrud, ConnectedAccountCrud } from "./crud/connected-accounts"; import { ContactChannelsCrud } from "./crud/contact-channels";