fix: resolve Docker Compose build failure with Prisma Client generation

Fix critical issue where `docker compose build` was failing with:
"Module not found: Can't resolve '../prisma/client-generated'"

Root cause:
- Next.js build requires Prisma Client during webpack compilation
- Prisma Client was not being generated before the Next.js build step

Changes:
1. keep-notes/Dockerfile:
   - Add explicit `RUN npx prisma generate` in builder stage before `npm run build`
   - Ensures client-generated directory exists when Next.js compiles

2. keep-notes/package.json:
   - Update build script: "prisma generate && next build --webpack"
   - Double-protection: runs prisma generate both in Dockerfile and build script

3. docker-compose.yml:
   - Remove obsolete `version: '3.8'` attribute (deprecated in Docker Compose v2)

Result:
✓ Docker build now completes successfully
✓ Prisma Client generated at ./prisma/client-generated
✓ Next.js webpack compilation finds the client module

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
sepehr 2026-01-12 21:12:47 +01:00
parent 519dffd5a6
commit ff110b735c
3 changed files with 7 additions and 8 deletions

View File

@ -1,5 +1,3 @@
version: '3.8'
services:
# ============================================
# keep-notes - Next.js Web Application

View File

@ -20,7 +20,11 @@ WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .
# Build Next.js with Webpack (NO Prisma generate here)
# Copy Prisma schema and generate client BEFORE Next.js build
COPY prisma ./prisma
RUN npx prisma generate
# Build Next.js with Webpack
ENV NEXT_TELEMETRY_DISABLED=1
RUN npm run build
@ -44,13 +48,10 @@ RUN chown nextjs:nodejs .next
COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static
# Copy Prisma schema and node_modules (needed for generation in runner)
# Copy Prisma schema and generated client
COPY --from=builder /app/prisma ./prisma
COPY --from=builder --chown=nextjs:nodejs /app/node_modules ./node_modules
# Generate Prisma Client in RUNNER (after all files are copied)
RUN npx prisma generate
USER nextjs
EXPOSE 3000

View File

@ -5,7 +5,7 @@
"scripts": {
"dev": "set TURBOPACK=0&& next dev",
"dev:turbo": "next dev",
"build": "next build --webpack",
"build": "prisma generate && next build --webpack",
"start": "next start",
"db:generate": "prisma generate",
"test": "playwright test",