From f174bd9977c78eafdda122ba2bc061ff15e48572 Mon Sep 17 00:00:00 2001 From: Randall Stillwell Date: Tue, 10 Mar 2026 13:45:04 -0500 Subject: [PATCH] Fix prisma CLI in production container for db push Use a separate Docker stage to install prisma CLI + all transitive deps, then merge into the runner's node_modules with correct ownership. Verified: prisma --version works inside the container. Made-with: Cursor --- Dockerfile | 11 ++++++++--- start.sh | 2 +- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 2323d68..3886cca 100644 --- a/Dockerfile +++ b/Dockerfile @@ -18,6 +18,11 @@ COPY . . ENV NEXT_TELEMETRY_DISABLED=1 RUN npx prisma generate && npm run build +# Standalone prisma install for runtime db push +FROM base AS prisma-cli +WORKDIR /tmp/prisma +RUN npm init -y > /dev/null 2>&1 && npm install --ignore-scripts prisma dotenv @prisma/adapter-pg 2>/dev/null + FROM base AS runner WORKDIR /app @@ -32,11 +37,11 @@ COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./ COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static COPY --from=builder /app/prisma ./prisma COPY --from=builder /app/prisma.config.ts ./prisma.config.ts -COPY --from=builder /app/node_modules/prisma ./node_modules/prisma -COPY --from=builder /app/node_modules/@prisma ./node_modules/@prisma -COPY --from=builder /app/node_modules/dotenv ./node_modules/dotenv COPY --from=builder /app/start.sh ./start.sh +# Merge prisma CLI + deps into node_modules (alongside standalone deps) +COPY --chown=nextjs:nodejs --from=prisma-cli /tmp/prisma/node_modules ./node_modules + RUN mkdir -p /data/watch && chown -R nextjs:nodejs /data USER nextjs diff --git a/start.sh b/start.sh index e39b135..a296e96 100755 --- a/start.sh +++ b/start.sh @@ -2,7 +2,7 @@ set -e echo "Running database migrations..." -npx prisma db push --skip-generate 2>&1 || echo "Warning: prisma db push failed, tables may already exist" +node node_modules/prisma/build/index.js db push --skip-generate 2>&1 || echo "Warning: prisma db push failed, tables may already exist" echo "Starting server..." exec node server.js