إنشاء صور Docker باستخدام Jenkins
اضبطوا مهام Jenkins لإنشاء صور Docker ودفعها تلقائيًا إلى سجل عند تغيّر التعليمات البرمجية
إنشاء صور Docker باستخدام Jenkins درس مجاني في DevOps Bootcamp على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في DevOps Bootcamp، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة DevOps Bootcamp 4 دروس في المجموع.
أتمتة عمليات بناء Docker
قد يكون بناء صور Docker يدويًا بطيئًا وغير متسق وعرضة للأخطاء. وينطبق ذلك خصوصًا في بيئة العمل الجماعي أو عند إجراء تغييرات متكررة على الكود.
تُعد الأتمتة عنصرًا أساسيًا لتسليم البرمجيات بشكل موثوق وفعال. في هذا الدرس، سنتعلم كيفية دمج Jenkins مع Docker لأتمتة إنشاء الصور ودفعها.

المتطلبات الأساسية لـ Jenkins وDocker
حتى يتمكن Jenkins من بناء صور Docker، يجب أن يتفاعل مع Docker daemon. وهذا يعني ضرورة تثبيت عميل Docker على الجهاز أو الوكيل الذي ستُشغّل عليه مهمة Jenkins.
ستحتاجون أيضًا إلى:
- خادم Jenkins قيد التشغيل (من الدرس 1)
- الوصول إلى Docker registry (مثل Docker Hub)
- تطبيق نموذجي وملف Dockerfile الخاص به
تثبيت Docker على مضيف Jenkins
لتمكين Jenkins من تنفيذ أوامر Docker، تأكد من تثبيت Docker وتهيئته على خادم Jenkins أو وكيله. غالبًا ما يحتاج مستخدم Jenkins إلى أذونات للتفاعل مع عفريت Docker.
إليك طريقة إعداد ذلك على نظام Linux:
sudo apt-get update
sudo apt-get install -y docker.io
sudo usermod -aG docker jenkins
sudo systemctl restart docker
sudo systemctl restart jenkinsتأمين بيانات اعتماد السجل
لدفع الصور إلى سجل Docker، يحتاج Jenkins إلى بيانات اعتماد. ومن الضروري تخزينها بأمان، وليس مباشرةً في Jenkinsfile أو إعدادات المهمة.
تُعد ميزة Credentials المضمنة في Jenkins مناسبة تمامًا لهذا الغرض:
- انتقل إلى Manage Jenkins > Manage Credentials.
- أضف بيانات اعتماد جديدة من نوع Username with password لسجل Docker الخاص بك.
- امنحها معرّفًا وصفيًا (مثل
dockerhub-credentials) لاستخدامه لاحقًا.
تطبيق Flask نموذجي
لنستخدم تطبيق Python Flask بسيطًا جدًا. سنضعه في ملف باسم app.py. وسيعرض رسالة أساسية هي 'Hello'.
سنحتاج أيضًا إلى ملف requirements.txt لتحديد تبعيات Python.
# app.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello from CoddyKit!'
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=5000)
# requirements.txt
Flask==2.0.2إنشاء Dockerfile
بعد ذلك، سنعرّف صورة Docker باستخدام Dockerfile. وسيوجّه هذا الملف Docker إلى كيفية إنشاء صورة تطبيقنا.
ضع Dockerfile هذا في الدليل نفسه الذي يحتوي على app.py وrequirements.txt.
# Dockerfile
FROM python:3.9-slim-buster
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY app.py .
EXPOSE 5000
CMD ["python", "app.py"]مهمة Jenkins: خطوة الإنشاء
لنبدأ الآن بتهيئة مهمة Jenkins من نوع Freestyle. في قسم Build Steps، أضف خطوة Execute shell. سيُنشئ هذا الأمر صورة Docker الخاصة بك.
تذكّر استبدال yourusername باسم مستخدم Docker Hub أو بمسار السجل الخاص بك.
# In Jenkins 'Execute shell' build step:
docker build -t yourusername/coddykit-app:latest .مهمة Jenkins: خطوة تسجيل الدخول والدفع
بعد إنشاء الصورة، نحتاج إلى دفعها إلى سجل Docker الخاص بنا. ويتطلب ذلك عادةً تسجيل الدخول. سنستخدم بيانات الاعتماد التي خزنّاها سابقًا.
أضف خطوة أخرى من نوع Execute shell. وسيُمرّر Jenkins بيانات الاعتماد كمتغيرات بيئية (مثل DOCKER_USER وDOCKER_PASS) إذا تم إعدادها بشكل صحيح.
# In Jenkins 'Execute shell' build step:
echo $DOCKER_PASS | docker login -u $DOCKER_USER --password-stdin
docker push yourusername/coddykit-app:latestأتمتة مشغلات الإنشاء
تأتي قوة CI/CD من الأتمتة. يستطيع Jenkins تشغيل مهام الإنشاء والدفع هذه تلقائيًا استنادًا إلى أحداث مختلفة:
- SCM Polling: يتحقق Jenkins دوريًا من مستودع Git بحثًا عن عمليات تنفيذ جديدة.
- Webhooks: يرسل موفر Git لديك (GitHub أو GitLab أو Bitbucket) إشعارًا إلى Jenkins كلما تم دفع تغييرات برمجية.
- Upstream Projects: يتم تشغيل المهمة عند اكتمال مهمة Jenkins أخرى بنجاح.
اختبار مهمة Jenkins
بعد تهيئة خطوات الإنشاء والمشغلات، احفظ مهمة Jenkins. ويمكنك تشغيل عملية إنشاء يدويًا لاختبارها. راقب مخرجات وحدة التحكم للتأكد من نجاح إنشاء صورة Docker ودفعها.
يعني التشغيل الناجح أن مسار CI لديك أصبح قادرًا على إنشاء صور Docker جديدة وتخزينها تلقائيًا كلما تغيّر الكود!
تحقق سريع
لقد أعددت مهمة Jenkins لإنشاء صورة Docker ودفعها. ويحتوي مستودع Git لديك على تغييرات جديدة في الكود.
مراجعة: الإنشاء والدفع
أحسنت! لقد تعلمت في هذا الدرس كيفية:
- إعداد بيئة Jenkins للتفاعل مع Docker.
- إدارة بيانات اعتماد سجل Docker بأمان في Jenkins.
- تهيئة مهمة Jenkins لإنشاء صورة Docker باستخدام Dockerfile.
- دفع الصورة المنشأة حديثًا إلى سجل Docker.
- فهم الطرق المختلفة لتشغيل عمليات الإنشاء تلقائيًا.
تُعد أتمتة هذه الخطوات جزءًا أساسيًا من التكامل المستمر، وتمهّد الطريق للتسليم المستمر!
الأسئلة الشائعة
هل درس «إنشاء صور Docker باستخدام Jenkins» مجاني؟
نعم — نص درس «إنشاء صور Docker باستخدام Jenkins» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة DevOps Bootcamp، انتقل إلى CoddyKit PRO. تتضمن دورة DevOps Bootcamp 4 دروس في المجموع.
ماذا ستتعلم في «إنشاء صور Docker باستخدام Jenkins»؟
اضبطوا مهام Jenkins لإنشاء صور Docker ودفعها تلقائيًا إلى سجل عند تغيّر التعليمات البرمجية تتمرن على DevOps Bootcamp مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ DevOps Bootcamp؟
لا تُشترط خبرة سابقة. DevOps Bootcamp على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «إنشاء صور Docker باستخدام Jenkins»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس DevOps Bootcamp هذا؟
نعم. كل درس في DevOps Bootcamp يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- مقدمة إلى Jenkins
- إنشاء صور Docker باستخدام Jenkins
- النشر الآلي باستخدام Jenkins
- خط أنابيب Jenkins كتعليمة برمجية باستخدام Jenkinsfile