3.2 KiB
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 خصوصی
- Push کردن image به Docker Hub یا registry خصوصی
- 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
نکات مهم
- فایلهای
prisma/engines/*باید در git commit شوند - این فایلها binary هستند و حجم دارند (~50MB)
- هر بار که Prisma version تغییر کرد، باید engines را دوباره دانلود کنید
- متغیرهای محیطی را در 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 با خطا مواجه شد:
- بررسی کنید که
prisma/enginesوجود دارد - بررسی کنید که فایلها executable هستند
- لاگهای کامل Docker را بررسی کنید
- از روش "Build روی سیستم محلی" استفاده کنید