108 lines
3.2 KiB
Markdown
108 lines
3.2 KiB
Markdown
# راهنمای دیپلوی در سرورهای ایران
|
|
|
|
## مشکل
|
|
سرورهای ایران به دلیل تحریمها نمیتوانند به `binaries.prisma.sh` دسترسی داشته باشند و Prisma نمیتواند باینریهای لازم را دانلود کند.
|
|
|
|
## راهحل پیادهسازی شده
|
|
|
|
### دانلود Manual باینریهای Prisma
|
|
|
|
روی سیستمی با دسترسی به اینترنت (مثل لپتاپ شخصی با VPN):
|
|
|
|
```bash
|
|
# اجرای اسکریپت دانلود
|
|
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 کار نکرد:
|
|
|
|
```bash
|
|
# روی سیستم با اینترنت
|
|
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 کردن از سرور ایران
|
|
|
|
```bash
|
|
# روی سیستم با اینترنت
|
|
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
|
|
# در Dockerfile قبل از RUN commands
|
|
ENV HTTP_PROXY=http://your-proxy:port
|
|
ENV HTTPS_PROXY=http://your-proxy:port
|
|
```
|
|
|
|
## تست محلی
|
|
|
|
```bash
|
|
# 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 تنظیم کنید
|
|
|
|
## متغیرهای محیطی مورد نیاز
|
|
|
|
```env
|
|
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 روی سیستم محلی" استفاده کنید
|
|
|