Ship prebuilt Prisma client so the server never runs prisma generate

prisma generate needs over three minutes on the production host, which made
every deploy hang on that build step. The client is now generated on the dev
machine into prisma-client.tar.gz (tracked, 8.5MB) and the image just untars
it. Dropping the unused linux-musl engine target halves that payload.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-08 16:35:06 +03:30
co-authored by Cursor
parent aa9b3ee451
commit d5dfd6a0f0
7 changed files with 49 additions and 12 deletions
+11 -7
View File
@@ -27,15 +27,16 @@ npm run start:dev
## دیپلوی: بیلد روی سیستم خودت، اجرا روی سرور
روی سرور هیچ `npm` یا دانلودی لازم نیست. `node_modules` از قبل داخل
`deploy-bundle.tar.gz` (روی گیت) است و `dist` هم روی گیت commit می‌شود.
روی سرور هیچ `npm` و هیچ دستور `prisma` اجرا نمی‌شود. سه چیز از قبل ساخته و روی
گیت هستند: `dist`، `prisma-client.tar.gz` (کلاینت Prisma) و
`deploy-bundle.tar.gz` (`node_modules` پروداکشن).
**۱) روی سیستم خودت:**
```bash
cd fabric_trade_server
npm run build
git add dist && git commit -m "..." && git push
npm run deploy:build
git add dist prisma-client.tar.gz && git commit -m "..." && git push
```
**۲) روی سرور:**
@@ -47,9 +48,12 @@ docker compose up -d --build
docker compose logs -f api
```
`Dockerfile` باندل را باز می‌کند، بعد `dist` و `prisma` و `package.json` را از
گیت روی آن می‌نویسد و `prisma generate` می‌زند؛ پس تغییر schema و مایگریشن
جدید هم فقط با `git pull` می‌رسد.
`Dockerfile` باندل را باز می‌کند، بعد `dist` و `prisma` و کلاینت آماده‌ی Prisma
را روی آن می‌نویسد. `prisma generate` روی هاست پروداکشن چند دقیقه طول می‌کشد،
پس عمداً آنجا اجرا نمی‌شود.
هر بار که `prisma/schema.prisma` را عوض کردی، `npm run deploy:build` را بزن تا
`prisma-client.tar.gz` هم به‌روز شود؛ وگرنه سرور با کلاینت قدیمی بالا می‌آید.
**فقط اگر پکیج npm جدید اضافه شد** باندل را دوباره بساز و push کن: