From 1ed9c6150ff92024a3fd7f9451650d07aa48697f Mon Sep 17 00:00:00 2001 From: Konstantin Wohlwend Date: Tue, 14 Oct 2025 11:29:41 -0700 Subject: [PATCH] Use custom migration script for self-hosting container --- apps/backend/package.json | 2 +- .../db-migrations.tsup.config.ts} | 4 ++-- docker/server/Dockerfile | 10 +++++----- docker/server/entrypoint.sh | 6 ++++-- 4 files changed, 12 insertions(+), 10 deletions(-) rename apps/backend/{prisma/tsup.config.ts => scripts/db-migrations.tsup.config.ts} (82%) diff --git a/apps/backend/package.json b/apps/backend/package.json index 816d60d7c..0de94a60e 100644 --- a/apps/backend/package.json +++ b/apps/backend/package.json @@ -10,7 +10,7 @@ "dev": "concurrently -n \"dev,codegen,prisma-studio\" -k \"next dev --turbopack --port 8102\" \"pnpm run codegen:watch\" \"pnpm run prisma-studio\"", "build": "pnpm run codegen && next build", "docker-build": "pnpm run codegen && next build --experimental-build-mode compile", - "build-self-host-seed-script": "tsup --config prisma/tsup.config.ts", + "build-self-host-migration-script": "tsup --config scripts/db-migrations.tsup.config.ts", "analyze-bundle": "ANALYZE_BUNDLE=1 pnpm run build", "start": "next start --port 8102", "codegen-prisma": "pnpm run prisma generate", diff --git a/apps/backend/prisma/tsup.config.ts b/apps/backend/scripts/db-migrations.tsup.config.ts similarity index 82% rename from apps/backend/prisma/tsup.config.ts rename to apps/backend/scripts/db-migrations.tsup.config.ts index 4845065a1..c3c014a10 100644 --- a/apps/backend/prisma/tsup.config.ts +++ b/apps/backend/scripts/db-migrations.tsup.config.ts @@ -6,10 +6,10 @@ const customNoExternal = new Set([ ...Object.keys(packageJson.dependencies), ]); -// tsup config to build the self-hosting seed script so it can be +// tsup config to build the self-hosting migration script so it can be // run in the Docker container with no extra dependencies. export default defineConfig({ - entry: ['prisma/seed.ts'], + entry: ['scripts/db-migrations.ts'], format: ['cjs'], outDir: 'dist', target: 'node22', diff --git a/docker/server/Dockerfile b/docker/server/Dockerfile index 0a2d31713..f95d0f39f 100644 --- a/docker/server/Dockerfile +++ b/docker/server/Dockerfile @@ -29,6 +29,7 @@ RUN tsx ./scripts/generate-sdks.ts RUN turbo prune --scope=@stackframe/stack-backend --scope=@stackframe/stack-dashboard --docker + # Build stage FROM base AS builder @@ -55,7 +56,9 @@ ENV NEXT_CONFIG_OUTPUT=standalone RUN pnpm turbo run docker-build --filter=@stackframe/stack-backend... --filter=@stackframe/stack-dashboard... # Build the self-host seed script -RUN cd apps/backend && pnpm build-self-host-seed-script +RUN cd apps/backend && pnpm build-self-host-migration-script + + # Final image FROM node:${NODE_VERSION}-slim @@ -68,14 +71,11 @@ RUN apt-get update && \ apt-get install -y openssl socat && \ rm -rf /var/lib/apt/lists -# Install Prisma CLI globally so we can run migrations on startup -RUN npm i -g prisma - # Copy built backend 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/seed.js ./apps/backend +COPY --from=builder --chown=node:node /app/apps/backend/dist/db-migrations.js ./apps/backend # Copy built dashboard COPY --from=builder --chown=node:node /app/apps/dashboard/.next/standalone ./ diff --git a/docker/server/entrypoint.sh b/docker/server/entrypoint.sh index d2b9a7bc1..b94e732a9 100644 --- a/docker/server/entrypoint.sh +++ b/docker/server/entrypoint.sh @@ -37,7 +37,9 @@ if [ "$STACK_SKIP_MIGRATIONS" = "true" ]; then echo "Skipping migrations." else echo "Running migrations..." - pnpm run db:migrate + cd apps/backend + node db-migrations.js migrate + cd ../.. fi if [ "$STACK_SKIP_SEED_SCRIPT" = "true" ]; then @@ -45,7 +47,7 @@ if [ "$STACK_SKIP_SEED_SCRIPT" = "true" ]; then else echo "Running seed script..." cd apps/backend - node seed.js + node db-migrations.js seed cd ../.. fi