Files
football-next/DEPLOY_IRAN.md

3.2 KiB

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

مشکل

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

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

دانلود Manual باینری‌های Prisma

روی سیستمی با دسترسی به اینترنت (مثل لپ‌تاپ شخصی با VPN):

# اجرای اسکریپت دانلود
bash scripts/download-prisma-engines.sh

# Commit کردن فایل‌ها
git add prisma/engines
git commit -m "Add Prisma engines for offline deployment"
git push

این کار باینری‌های Prisma را در پوشه prisma/engines قرار می‌دهد و Dockerfile از آن‌ها استفاده می‌کند.

راه‌حل‌های جایگزین

الف) Build روی سیستم محلی و Push کردن Image

اگر دانلود engines کار نکرد:

# روی سیستم با اینترنت
docker build -t football-next:latest \
  --build-arg DATABASE_URL="your-db-url" \
  --build-arg NEXTAUTH_URL="your-url" \
  --build-arg NEXTAUTH_SECRET="your-secret" \
  .

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

# انتقال به سرور و load کردن
gunzip -c football-next.tar.gz | docker load

ب) استفاده از Registry خصوصی

  1. Push کردن image به Docker Hub یا registry خصوصی
  2. Pull کردن از سرور ایران
# روی سیستم با اینترنت
docker build -t your-username/football-next:latest .
docker push your-username/football-next:latest

# روی سرور ایران
docker pull your-username/football-next:latest

ج) استفاده از Proxy

اگر سرور به proxy دسترسی دارد:

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

تست محلی

# Build
docker build -t football-next:test \
  --build-arg DATABASE_URL="postgresql://user:pass@host:5432/db" \
  --build-arg NEXTAUTH_URL="http://localhost:3000" \
  --build-arg NEXTAUTH_SECRET="test-secret" \
  .

# Run
docker run -p 3000:3000 football-next:test

نکات مهم

  1. فایل‌های prisma/engines/* باید در git commit شوند
  2. این فایل‌ها binary هستند و حجم دارند (~50MB)
  3. هر بار که Prisma version تغییر کرد، باید engines را دوباره دانلود کنید
  4. متغیرهای محیطی را در Coolify تنظیم کنید

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

DATABASE_URL=postgresql://user:password@host:5432/dbname
NEXTAUTH_URL=https://your-domain.com
NEXTAUTH_SECRET=your-secret-key-min-32-chars
IPPANEL_TOKEN=your-ippanel-token (optional)

عیب‌یابی

اگر build با خطا مواجه شد:

  1. بررسی کنید که prisma/engines وجود دارد
  2. بررسی کنید که فایل‌ها executable هستند
  3. لاگ‌های کامل Docker را بررسی کنید
  4. از روش "Build روی سیستم محلی" استفاده کنید