4.2 KiB
4.2 KiB
راهنمای دیپلوی با Runflare (بدون دسترسی بینالملل)
مشکل
سرور فقط به mirror داخلی (Runflare) دسترسی دارد و نمیتواند Prisma engines را دانلود کند.
راهحل: Pre-generate کردن Prisma Client
مرحله ۱: Generate کردن Prisma Client (روی سیستم محلی با VPN)
# نصب dependencies
npm install
# Generate کردن Prisma Client
npx prisma generate
# این فایلها ساخته میشوند:
# - node_modules/.prisma/client/
# - node_modules/@prisma/client/
مرحله ۲: کپی کردن Generated Files به پروژه
# ساخت پوشه برای Prisma generated files
mkdir -p prisma/generated
# کپی کردن فایلهای generate شده
cp -r node_modules/.prisma/client prisma/generated/.prisma-client
cp -r node_modules/@prisma/client prisma/generated/@prisma-client
# یا در Windows PowerShell:
# New-Item -ItemType Directory -Force -Path "prisma/generated"
# Copy-Item -Recurse "node_modules/.prisma/client" "prisma/generated/.prisma-client"
# Copy-Item -Recurse "node_modules/@prisma/client" "prisma/generated/@prisma-client"
مرحله ۳: Commit و Push
git add prisma/generated
git add Dockerfile
git commit -m "Add pre-generated Prisma client for Runflare deployment"
git push
مرحله ۴: تنظیم Coolify برای استفاده از Runflare
در تنظیمات Coolify یا در سرور:
# تنظیم Docker برای استفاده از Runflare
sudo mkdir -p /etc/docker
sudo nano /etc/docker/daemon.json
اضافه کردن:
{
"registry-mirrors": ["https://docker.runflare.com"]
}
sudo systemctl restart docker
Dockerfile جدید
Dockerfile جدید این کارها رو انجام میده:
- از NPM mirror استفاده میکنه
- Prisma postinstall رو skip میکنه
- از فایلهای pre-generated استفاده میکنه
راهحل جایگزین: استفاده از Base Image آماده
اگر روش بالا کار نکرد:
گام ۱: Build روی سیستم با VPN
docker build -t football-next:latest \
--build-arg DATABASE_URL="postgresql://user:pass@host:5432/db" \
--build-arg NEXTAUTH_URL="https://yourdomain.com" \
--build-arg NEXTAUTH_SECRET="your-secret" \
.
docker save football-next:latest | gzip > football-next.tar.gz
گام ۲: آپلود به سرور فایل ایرانی
# آپلود به سرویس فایل ایرانی مثل:
# - files.ir
# - uploadboy.com
# - یا هر سرویس دیگر
# یا مستقیم با SCP اگر IP سرور دارید
scp football-next.tar.gz user@server:/tmp/
گام ۳: Load در سرور
ssh user@server
cd /tmp
gunzip -c football-next.tar.gz | docker load
docker images # بررسی
گام ۴: استفاده در Coolify
در Coolify:
- Source Type: Docker Image
- Image Name:
football-next:latest - تنظیم Environment Variables
تنظیمات NPM برای Runflare
اگر میخواهید روی سرور npm کار کنه:
npm config set registry https://registry.npmmirror.com
# یا
npm config set registry https://npm.runflare.com
عیبیابی
خطا: Cannot find module '@prisma/client'
راهحل:
# روی سیستم محلی
npm install
npx prisma generate
# کپی کردن فایلهای generated به prisma/generated
# commit و push
خطا: Prisma engines not found
راهحل: استفاده از روش "Build روی سیستم با VPN"
خلاصه
بهترین روش برای سرور بدون دسترسی بینالملل:
- ✅ Build image روی سیستم با VPN
- ✅ Save کردن image به فایل
- ✅ آپلود به سرور فایل ایرانی
- ✅ دانلود و Load در سرور
- ✅ استفاده در Coolify
این روش ۱۰۰٪ کار میکنه و دیگه نیازی به دسترسی بینالملل نیست.
حجم فایل
- Image فشرده شده: ~200-300 MB
- زمان آپلود با اینترنت ۱۰ مگ: ~5 دقیقه
- زمان download در سرور: بستگی به سرعت سرور داره