الدليل‹الكود والتصدير
الكود والتصديرمتوسّط‏١٥ دقيقة قراءة

انشر في أي مكان

انقل مشروع مايندلاب من المعاينة المُدارة إلى بنيتك التحتية الخاصة — AWS أو Azure أو GCP أو خادم افتراضي خاص مجرّد أو Kubernetes. كل مسار، خطوة بخطوة.

خيارات النشر

صُمّمت المعاينة المُدارة في مايندلاب لسرعة التكرار، لا لأحمال الإنتاج. وعندما يصبح تطبيقك جاهزًا للمستخدمين الحقيقيين، أمامك مساران:

  • النشر بنقرة واحدة — يبني مايندلاب صورة حاوية وينشرها في بيئة بمستوى الإنتاج مع قاعدة بيانات مُدارة وSSL وتوسّع تلقائي. هو المسار الأسرع؛ وتبقى على بنية مايندلاب التحتية. اضبط نطاقًا مخصّصًا وانطلق في دقائق.
  • التصدير والاستضافة الذاتية — نزّل ملف ZIP للكود المولّد وانشره بنفسك على أي سحابة أو خادم. تحكّم كامل؛ ودون أي ارتباط حصري.

تغطّي بقية هذا الدليل مسار الاستضافة الذاتية. وللنشر بنقرة واحدة، راجع Project Settings → Deploy → Publish.

تصدير الكود

قبل أن تتمكّن من النشر في أي مكان، تحتاج إلى المصدر المولّد. يمكنك التصدير كملف ZIP أو الدفع إلى GitHub (ما يمنحك سير عمل أنظف للتحديثات المستمرة).

1
افتح Project Settings → Export
انقر على اسم المشروع في الشريط الجانبي → Settings → Export.
2
اختر الصيغة
اختر 'ZIP download' للقطة لمرة واحدة، أو 'GitHub push' للتصدير إلى مستودع متصل (راجع دليل مزامنة GitHub أولًا).
3
التنزيل
يحتوي ملف ZIP على واجهة React الأمامية، وخادم FastAPI، وملفات ترحيل قاعدة البيانات، وملف Dockerfile، وملف docker-compose.yml للتطوير المحلي.

تبدو البنية المصدَّرة هكذا:

tree
my-project/
├── frontend/          # React + Vite app
│   ├── src/
│   └── package.json
├── backend/           # FastAPI app
│   ├── app/
│   ├── migrations/
│   └── requirements.txt
├── Dockerfile
├── docker-compose.yml
└── .env.example
💡
نصيحة.انسخ .env.example إلى .env واملأ القيم قبل النشر. يسرد الملف كل متغيّر بيئة يحتاجه التطبيق.

خادم افتراضي خاص (أي مزوّد)

أي خادم Linux افتراضي خاص مثبّت عليه Docker (DigitalOcean أو Hetzner أو Linode أو OVH وغيرها) يعمل. وهذا أسرع مسار للاستضافة الذاتية.

1
انسخ الكود إلى الخادم
انقل ملف ZIP عبر SCP، أو استنسخه من GitHub إن كنت قد دفعته هناك.
2
املأ متغيّرات البيئة
انسخ .env.example إلى .env وأضف عنوان قاعدة بياناتك، والمفتاح السرّي، وأي مفاتيح API لجهات خارجية.
3
ابنِ وشغّل باستخدام Docker Compose
bash
# On the server
docker compose up -d --build

يشغّل Docker Compose الواجهة الأمامية والخادم وحاوية Postgres. تُقدَّم الواجهة الأمامية على المنفذ 3000، وواجهة الخادم البرمجية على المنفذ 8000.

4
اضبط وكيلًا عكسيًا
استخدم Caddy أو nginx للتعامل مع SSL وتوجيه حركة المرور. وCaddy هو الأبسط — فهو يوفّر شهادات Let's Encrypt تلقائيًا.
Caddyfile
yourdomain.com {
    reverse_proxy localhost:3000
}

api.yourdomain.com {
    reverse_proxy localhost:8000
}

AWS

النمط الموصى به في AWS هو: Elastic Container Registry (ECR) للصورة، وElastic Container Service (ECS) مع Fargate لتشغيلها، وRDS لقاعدة البيانات.

1
ابنِ الصورة وادفعها إلى ECR
bash
# Authenticate
aws ecr get-login-password --region eu-west-1 |   docker login --username AWS --password-stdin   123456789.dkr.ecr.eu-west-1.amazonaws.com

# Build and push
docker build -t my-project .
docker tag my-project:latest   123456789.dkr.ecr.eu-west-1.amazonaws.com/my-project:latest
docker push   123456789.dkr.ecr.eu-west-1.amazonaws.com/my-project:latest
2
أنشئ عنقود ECS وخدمة
في وحدة تحكّم AWS، أنشئ عنقود ECS جديدًا (Fargate)، وعرّف مهمة باستخدام صورة ECR، وأنشئ خدمة. اضبط المعالج على ٠٫٥ وحدة vCPU والذاكرة على ١ غيغابايت لتطبيق صغير.
3
وفّر نسخة RDS Postgres
أنشئ نسخة RDS من نوع db.t3.micro في نفس الـ VPC. وانسخ سلسلة الاتصال إلى متغيّرات بيئة مهمة ECS.
4
أضف موزّع حمل تطبيقات
وجّه حركة مرور HTTPS إلى خدمة ECS. واستخدم AWS Certificate Manager للحصول على شهادة SSL مجانية لنطاقك.
ℹ
ملاحظة.لعمليات النشر في منطقة دول الخليج، استخدم منطقة me-south-1 (البحرين) أو me-central-1 (الإمارات) للحفاظ على البيانات داخل دول الخليج. تواصل معنا إذا احتجت إلى مساعدة في متطلّبات السيادة.

Azure

النمط الموصى به في Azure هو: Azure Container Registry (ACR) + Azure Container Apps + Azure Database for PostgreSQL.

1
ادفع الصورة إلى ACR
bash
az acr build --registry myregistry   --image my-project:latest .
2
أنشئ Container App
في بوابة Azure، أنشئ بيئة Container Apps، ثم Container App يشير إلى صورة ACR الخاصة بك. وفعّل المدخل الخارجي على المنفذ 3000.
3
اضبط متغيّرات البيئة
أضف DATABASE_URL وSECRET_KEY وأي قيم أخرى من ملف .env في قسم متغيّرات البيئة بـ Container App.
4
وفّر Azure Database for PostgreSQL
استخدم فئة Flexible Server. وضعها في نفس مجموعة الموارد والشبكة الافتراضية الخاصة بـ Container App.
💡
نصيحة.يتوسّع Azure Container Apps إلى الصفر عند انعدام حركة المرور، ما يبقي التكاليف منخفضة للتطبيقات التي لا تتلقّى حركة مرور ثابتة بعد.

GCP

أبسط مسار في GCP هو Cloud Run (حاويات بلا خادم) مع Cloud SQL لقاعدة البيانات.

1
ابنِ وادفع إلى Artifact Registry
bash
# Configure Docker for GCP
gcloud auth configure-docker europe-west1-docker.pkg.dev

# Build and push
docker build -t europe-west1-docker.pkg.dev/my-project/repo/app:latest .
docker push europe-west1-docker.pkg.dev/my-project/repo/app:latest
2
انشر إلى Cloud Run
bash
gcloud run deploy my-project   --image europe-west1-docker.pkg.dev/my-project/repo/app:latest   --region europe-west1   --platform managed   --allow-unauthenticated   --set-env-vars DATABASE_URL=postgresql://...
3
اربط Cloud SQL
أنشئ نسخة Cloud SQL Postgres واستخدم Cloud SQL Auth Proxy للاتصال بأمان من Cloud Run. وأضف اسم الاتصال في إعدادات خدمة Cloud Run.

نطاق مخصّص

بغض النظر عن مزوّد الاستضافة، خطوات ربط نطاق مخصّص واحدة:

1
اشترِ نطاقًا أو استخدم نطاقًا قائمًا
وجّه سجل DNS من نوع A (أو CNAME للنطاقات الفرعية) إلى عنوان IP الخاص بخادمك أو موزّع الحمل.
2
اضبط SSL
استخدم SSL المُدار من مزوّدك (ACM في AWS، أو شهادة Azure المُدارة، أو شهادة GCP المُدارة)، أو Caddy / Certbot على خادم افتراضي خاص للحصول على Let's Encrypt تلقائيًا.
3
حدّث إعدادات CORS والكوكيز
اضبط متغيّر البيئة ALLOWED_ORIGINS في الخادم إلى نطاق الإنتاج الخاص بك، وحدّث FRONTEND_URL في ملف .env.
4
اختبر
زر نطاقك في جلسة متصفّح جديدة. وتحقّق من أن تسجيل الدخول واستدعاءات API وأي تكاملات لجهات خارجية تعمل بشكل صحيح.
💡
نصيحة.يمكنك أيضًا ضبط نطاق مخصّص على استضافة مايندلاب المُدارة (دون تصدير) من Project Settings → Domain. وهذا أسرع خيار إذا لم تكن بحاجة إلى مزوّد سحابي محدّد.
الخطوات التالية
→ العودة إلى الدليل