# راهنمای دیپلوی در سرورهای ایران

## مشکل
سرورهای ایران به دلیل تحریم‌ها نمی‌توانند به `binaries.prisma.sh` دسترسی داشته باشند و Prisma نمی‌تواند باینری‌های لازم را دانلود کند.

## راه‌حل‌های پیاده‌سازی شده

### ۱. تغییرات Dockerfile
- باینری‌های Prisma در مرحله `deps` دانلود و generate می‌شوند
- از `PRISMA_ENGINES_MIRROR` برای استفاده از CDN استفاده شده
- باینری‌ها به مرحله `builder` منتقل می‌شوند

### ۲. تغییرات package.json
- اضافه شدن `postinstall` script برای اجرای خودکار `prisma generate`
- تغییر `build` script برای اطمینان از generate شدن Prisma قبل از build

## راه‌حل‌های جایگزین (در صورت عدم موفقیت)

### الف) استفاده از Proxy یا VPN
اگر سرور شما به proxy یا VPN دسترسی دارد:

```bash
# در Dockerfile قبل از RUN npm ci
ENV HTTP_PROXY=http://your-proxy:port
ENV HTTPS_PROXY=http://your-proxy:port
```

### ب) Pre-build کردن و Push کردن Image
روی سیستم محلی (با دسترسی به اینترنت):

```bash
# Build کردن image
docker build -t football-next:latest .

# Save کردن image
docker save football-next:latest > football-next.tar

# انتقال فایل به سرور و load کردن
docker load < football-next.tar
```

### ج) استفاده از Prisma Binary از قبل دانلود شده
۱. روی سیستم با اینترنت:
```bash
npx prisma generate
```

۲. فایل‌های generate شده در `node_modules/.prisma` و `node_modules/@prisma` را کپی کنید

۳. در Dockerfile از COPY استفاده کنید:
```dockerfile
COPY node_modules/.prisma ./node_modules/.prisma
COPY node_modules/@prisma ./node_modules/@prisma
```

### د) استفاده از Mirror داخلی
اگر یک mirror داخلی دارید:

```dockerfile
ENV PRISMA_ENGINES_MIRROR=https://your-internal-mirror.ir
```

## تست محلی

برای تست Dockerfile قبل از دیپلوی:

```bash
# Build
docker build -t football-next:test .

# Run
docker run -p 3000:3000 \
  -e DATABASE_URL="your-db-url" \
  -e NEXTAUTH_URL="http://localhost:3000" \
  -e NEXTAUTH_SECRET="your-secret" \
  football-next:test
```

## نکات مهم

1. مطمئن شوید `prisma` folder در `.dockerignore` نیست
2. متغیرهای محیطی را در Coolify یا platform دیپلوی خود تنظیم کنید
3. اگر همچنان مشکل دارید، لاگ‌های کامل build را بررسی کنید

## متغیرهای محیطی مورد نیاز

```env
DATABASE_URL=postgresql://user:password@host:5432/dbname
NEXTAUTH_URL=https://your-domain.com
NEXTAUTH_SECRET=your-secret-key
```
