From ddf221cecede0fcb15817e949f3b9f0052c4bd7b Mon Sep 17 00:00:00 2001 From: hailin Date: Sat, 7 Mar 2026 18:10:43 -0800 Subject: [PATCH] fix(presence-service): generate prisma client in docker production stage - Move prisma from devDependencies to dependencies so it is available after pnpm install --prod in the Dockerfile production stage - Replace failed COPY of /app/node_modules/.prisma (pnpm virtual store path differs) with: COPY schema.prisma + RUN prisma generate in stage-1 - Only runs if schema.prisma exists (safe for all other services) Co-Authored-By: Claude Sonnet 4.6 --- Dockerfile.service | 10 +++++++--- packages/services/presence-service/package.json | 2 +- pnpm-lock.yaml | 6 +++--- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/Dockerfile.service b/Dockerfile.service index 05e6c56..a7800ae 100644 --- a/Dockerfile.service +++ b/Dockerfile.service @@ -83,9 +83,13 @@ COPY --from=builder /app/packages/services/${SERVICE_NAME}/dist packages/service # Copy SQL migration templates alongside compiled shared code in each service dist COPY --from=builder /app/packages/shared/database/src/migrations packages/services/${SERVICE_NAME}/dist/shared/database/src/migrations/ -# Copy Prisma generated client (required for services using @prisma/client) -# prisma generate runs in builder stage; production pnpm install skips build scripts -COPY --from=builder /app/node_modules/.prisma /app/node_modules/.prisma +# Copy Prisma schema and generate client if this service uses @prisma/client. +# prisma is kept in dependencies so it is available after --prod install. +ARG SERVICE_NAME +COPY --from=builder /app/packages/services/${SERVICE_NAME}/prisma packages/services/${SERVICE_NAME}/prisma/ +RUN test -f packages/services/${SERVICE_NAME}/prisma/schema.prisma && \ + cd packages/services/${SERVICE_NAME} && \ + node_modules/.bin/prisma generate --schema prisma/schema.prisma || true WORKDIR /app/packages/services/${SERVICE_NAME} diff --git a/packages/services/presence-service/package.json b/packages/services/presence-service/package.json index 1a0b3e3..c808710 100644 --- a/packages/services/presence-service/package.json +++ b/packages/services/presence-service/package.json @@ -24,6 +24,7 @@ "date-fns": "^2.30.0", "date-fns-tz": "^2.0.1", "ioredis": "^5.3.0", + "prisma": "^5.9.0", "reflect-metadata": "^0.2.0", "rxjs": "^7.8.0", "uuid": "^9.0.0" @@ -32,7 +33,6 @@ "@nestjs/cli": "^10.3.0", "@types/express": "^4.17.21", "@types/node": "^20.11.0", - "prisma": "^5.9.0", "typescript": "^5.4.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f8f1dd9..0387014 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -721,6 +721,9 @@ importers: ioredis: specifier: ^5.3.0 version: 5.9.2 + prisma: + specifier: ^5.9.0 + version: 5.22.0 reflect-metadata: specifier: ^0.2.0 version: 0.2.2 @@ -740,9 +743,6 @@ importers: '@types/node': specifier: ^20.11.0 version: 20.19.33 - prisma: - specifier: ^5.9.0 - version: 5.22.0 typescript: specifier: ^5.4.0 version: 5.9.3