MODULE 12 - النشر والإنتاج
مرحبًا بكم في الوحدة 12! 🚀
تطبيقك يعمل في التطوير... لكن كيف تضعه في الإنتاج؟ يغطي هذا الوحدة دورة النشر بالكامل: التغليف، Docker، CI/CD، والسحابة.
🎓 أهداف التعلم
في نهاية هذه الوحدة، ستكون قادرًا على:
- ✅ إعداد تطبيق للإنتاج
- ✅ إنشاء صور Docker محسّنة
- ✅ تكوين خط أنابيب CI/CD
- ✅ النشر على السحابة (Heroku، Railway، AWS)
- ✅ إدارة التكوينات حسب البيئة
📚 المتطلبات الأساسية
قبل أن تبدأ هذه الوحدة، يجب أن تكون قد:
- ✅ أكملت الوحدات من 1 إلى 11
- ✅ تم تثبيت Docker Desktop
- ✅ لديك حساب GitHub
- ✅ أساسيات Git (commit، push، branches)
🗺️ خطة الوحدة
الجزء النظري (4 فصول)
الفصل 1: التحضير للإنتاج
المدة: 45 دقيقة
المحتوى:
- JAR قابل للتنفيذ مقابل WAR
- ملفات تعريف Spring (dev، prod، test)
- التكوين الخارجي
- متغيرات البيئة
- أمان الأسرار
لماذا هو مهم؟ إعداد التطبيق بشكل صحيح
الفصل 2: حاويات Docker
المدة: 1 ساعة
المحتوى:
- Dockerfile لـ Spring Boot
- بناء متعدد المراحل
- Docker Compose
- التحسينات (الطبقات، JVM)
- الصور الخفيفة
لماذا هو مهم؟ معيار الصناعة
الفصل 3: CI/CD مع GitHub Actions
المدة: 1 ساعة
المحتوى:
- مقدمة عن CI/CD
- GitHub Actions workflows
- البناء والاختبارات الآلية
- نشر صور Docker
- النشر التلقائي
لماذا هو مهم؟ أتمتة عمليات النشر
الفصل 4: النشر السحابي
المدة: 45 دقيقة
المحتوى:
- Heroku / Railway
- AWS (Elastic Beanstalk، ECS)
- أساسيات Kubernetes
- قواعد البيانات المدارة
- المراقبة في الإنتاج
لماذا هو مهم؟ وضعه على الإنترنت
الجزء العملي (2 تمارين)
TP12.1: Dockerisation كاملة
المدة: 1 ساعة و30 دقيقة
الهدف: تحويل التطبيق إلى حاوية
ستقوم بـ:
- إنشاء Dockerfile محسّن
- بناء صورة متعددة المراحل
- تكوين Docker Compose (تطبيق + قاعدة بيانات)
- اختبار محلي
TP12.2: خط أنابيب CI/CD
المدة: 1 ساعة و30 دقيقة
الهدف: أتمتة النشر
ستقوم بـ:
- إنشاء workflow لـ GitHub Actions
- أتمتة الاختبارات والبناء
- النشر على Docker Hub
- النشر على Railway/Heroku
📊 المدة الإجمالية
| النوع | المدة |
|---|---|
| نظري | 3 ساعات و30 دقيقة (4 فصول) |
| عملي | 3 ساعات (2 تمارين) |
| الإجمالي | 6 ساعات و30 دقيقة (~2 جلسات) |
🎯 ما الذي ستفهمه
قبل هذه الوحدة
# تطوير محلي فقط 😰
mvn spring-boot:run
# "كيف أضع هذا على الإنترنت؟"
# "ما هو Docker؟"
# "CI/CD؟"
بعد هذه الوحدة
# بناء تلقائي عند كل دفع
git push origin main
# → GitHub Actions:
# ✅ اختبارات ناجحة
# ✅ صورة Docker مبنية
# ✅ منشورة على Docker Hub
# ✅ منشورة في الإنتاج
# تطبيقك متاح على:
# https://my-app.railway.app
# Dockerfile محسّن
FROM eclipse-temurin:17-jre-alpine
COPY target/*.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/app.jar"]
🚀 لماذا هذه الوحدة أساسية
1. مهارة لا غنى عنها
عروض العمل 2024:
✓ "Docker" - 90% من العروض
✓ "CI/CD" - 85% من العروض
✓ "Cloud (AWS/GCP/Azure)" - 80% من العروض
✓ "Kubernetes" - 60% من العروض
2. ثقافة DevOps
قبل:
Dev: "يعمل على جهازي"
Ops: "لا يعمل في الإنتاج"
الآن (DevOps):
- نفس البيئة في كل مكان (Docker)
- نشر تلقائي (CI/CD)
- البنية التحتية ككود
3. السرعة
بدون CI/CD:
- نشر يدوي: 2 ساعات
- خطر الخطأ البشري
- توتر يوم الجمعة
مع CI/CD:
- نشر تلقائي: 5 دقائق
- قابل للتكرار
- انشر عندما تريد
🗺️ التقدم في التدريب
الوحدة 12 = تطبيقك متاح للعالم!
📖 كيفية التعامل مع هذه الوحدة
التقدم الموصى به
- الفصل 1 → فهم التغليف
- الفصل 2 + TP12.1 → إتقان Docker
- الفصل 3 + TP12.2 → خط أنابيب CI/CD
- الفصل 4 → خيارات النشر
المتطلبات التقنية
# تحقق من أن لديك:
docker --version # Docker Desktop
git --version # Git
java -version # Java 17+
mvn -version # Maven
✅ التقييم الذاتي
قبل أن تبدأ، أجب:
- هل لديك Docker مثبت؟ ☐ نعم ☐ لا
- هل لديك حساب GitHub؟ ☐ نعم ☐ لا
- هل تعرف ما هو Dockerfile؟ ☐ نعم ☐ لا
- هل تعرف CI/CD؟ ☐ نعم ☐ لا
- هل سبق لك نشر تطبيق؟ ☐ نعم ☐ لا
هذه الوحدة ستجعلك متمكنًا من كل ذلك!
🎯 الخطوة التالية
جاهز للنشر في الإنتاج؟
➡️ ابدأ مع الفصل 1: التحضير للإنتاج