هذا نص مترجم آليًا وقد يحتوي على أخطاء!
Docker كأداة للأتمتة
باستخدام Compose، تصف الإعداد المطلوب في ملف واحد وتترك لـ Docker إنشاء الحاويات. تبدأ هنا بخادم ويب Nginx من صورة جاهزة. بعد ذلك يمكنك إضافة خدمة وفحص ما يتم إنشاؤه تلقائيًا.
قبل البدء: يجب أن يعمل Docker Engine وCompose من Docker Level 1. نفّذ الأمر docker compose version داخل آلة افتراضية لينكس. لا تحتاج إلى تطبيق Flask أو Docker File أو حساب على GitHub. يوفر مرجع YAML-oppslaget دعمًا للمسافات البادئة والقوائم؛ يمكنك قراءته دون الحاجة إلى إنشاء سير عمل GitHub.
أُنجز “المهمة 1” أولاً وتحقق من استجابة الويب. التحديث هو بحث للعمل اللاحق. تتيح لك “المهمة 2” تجربة عدة خدمات ضمن نفس المشروع.
ما هو Docker Compose؟
باستخدام Docker Compose، تصف خدمة واحدة أو أكثر في ملف واحد. في هذا التمرين، تشغّل كل خدمة حاوية واحدة. هنا يُستخدم docker-compose.yml.
compose.yaml و docker-compose.yml هما اسمان يدعمهما Compose. استخدم أحد هذين الملفين في مجلد المشروع، وشغّل الأوامر من ذلك المجلد. هنا يُستخدم docker-compose.yml.
services:
web:
image: nginx:latest
ports:
- "127.0.0.1:8083:80"
أمر واحد يقوم بإعداد كل شيء:
docker compose up -d
# Starter tjenestene i bakgrunnen.
# يبدأ الخدمات في الخلفية.
يمكن استخدام ملف Compose على خادم آخر، لكن يجب عليك أيضًا نقل البيانات والملفات المحلية اللازمة وإعداد كلمات المرور والشبكة والإعدادات الأخرى. قد تشير الوسوم مثل latest إلى صورة جديدة لاحقًا. لتكون عمليات البناء متطابقة، يجب أيضًا قفل الصورة المستخدمة.
لماذا يُعدّ هذا أتمتة؟
فكّر في الفرق:
| الإعداد اليدوي | باستخدام Docker Compose |
|---|---|
| تثبيت Nginx يدوياً | image: nginx:latest |
| تكوين المنافذ | ports: "80:80" |
| تثبيت Grafana يدوياً | image: grafana/grafana:latest |
| توثيق جميع الخطوات | وصف التهيئة المطلوبة في ملف Compose |
| تكرار كل شيء على الخادم التالي | docker compose up -d |
ملف Compose هو جزء من الوثائق التقنية ويصف التهيئة المطلوبة. تحقق من الحالة الفعلية عبر أمر docker compose ps والسجلات (اللاغات). يجب توثيق المبررات ونتائج الاختبارات وإجراءات النسخ الاحتياطي بشكل إضافي.
اقرأ المثال الصغير
يجمع services الخدمات. web هو الاسم الذي نمنحه لخادم الويب. يختار image صورة جاهزة، بينما تربط ports المنفذ 8083 على عنوان إعادة الاتصال الخاص بآلة الافتراض بالمدخلات إلى المنفذ 80 داخل الحاوية. لذلك تقوم بالتشغيل من آلة الافتراض ذاتها. ستأتي عملية البناء من الشيفرة المصدرية في Docker Level 2.
أوامر Docker المفيدة
| الأمر | ما يفعله |
|---|---|
docker compose up -d | يبدأ جميع الخدمات في الخلفية |
docker compose down | يوقف ويحذف حاويات المشروع والشبكات |
docker compose logs -f | يتتبع السجلات في الوقت الفعلي |
docker compose pull | يجلب الصور التي تشير إليها وسوم المشروع |
docker compose restart | يعيد تشغيل حاويات المشروع، دون تغيير الصورة |
docker ps | يعرض الحاويات العاملة |
عندما يحتاج الخدمة إلى تخزين البيانات
يشرح [[استخدام الحاويات المستوى 2 - الحفاظ على البيانات خارج الحاوية|الحفاظ على البيانات خارج الحاوية]] تثبيت المجلدات (bind mount) ووحدة التخزين المسماة (named volume). لا تحتاج تمارين Nginx أدناه إلى قاعدة بيانات أو ربط تخزين. استخدم دعم التخزين قبل توسيع المشروع بخدمة يجب أن تحافظ على البيانات.
تحديث الخدمات
تحديث خدمة Docker أمر سهل:
# احصل على أحدث نسخة
docker compose pull
# أعد التشغيل بالنسخة الجديدة
docker compose up -d
يستخدم up -d الصورة الجديدة من خلال إعادة إنشاء الحاوية. تحقق من أن الخدمة تعمل بعد التحديث؛ قد تتطلب إصدار صورة جديد تغييرات في الإعدادات أو البيانات.
المهام 1 - إعداد Nginx باستخدام Docker Compose
العمل في وحدة التحكم الخاصة بالآلة الافتراضية. أنشئ مجلدًا جديدًا حتى لا تعدل هذه التمرين على مشروع Compose آخر:
mkdir compose-ovelse
cd compose-ovelse
nano docker-compose.yml
إذا كانت المجلد موجودًا مسبقًا، افتحه وتحقق من محتواه قبل المتابعة. اكتب مثال Nginx الموجود في قسم “ما هو Docker Compose؟” داخل الملف. احفظ باستخدام Ctrl+O، وتأكد بالضغط على Enter، وانتهِ بالعمل بـ Ctrl+X. تحقق ثم شغّل:
docker compose config --quiet
docker compose up -d
docker compose ps
curl http://127.0.0.1:8083
يجب أن ينتهي الأمر config --quiet دون رسالة خطأ. بعد تصحيح الخطأ في الملف، شغّل الفحص مرة أخرى قبل البدء. يجب أن يعرض الأمر ps خدمة web قيد التشغيل، ويجب أن يعرض أمر curl محتوى Nginx مع النص “مرحباً بك في نينكس!”.
إذا كانت المنفذ مشغولًا، اختر منفذ مضيف متاحًا آخر في الملف واستخدم نفس المنفذ في أمر curl. إذا توقف الحاوية (container)، اقرأ سجلات Docker Compose للخدمة عبر أمر docker compose logs web. لا تبدأ مشروعًا جديدًا في مجلد عشوائي لإعادة المحاولة.
اشرح قبل المتابعة: ما هو الملف الذي يصف الخدمة؟ وماذا أنشأ الأمر docker compose up -d؟ أوقف المشروع باستخدام أمر docker compose stop، ثم أعد تشغيله بأمر docker compose up -d وكرر اختبار curl. إذا كنت تستخدم هذه الصفحة كدعم لـ Compose في مهمة أخرى، يمكنك العودة إليها الآن.
المهمة 2 - إضافة خدمة
وسّع ملف docker-compose.yml من المهمة 1 بخدمات إضافية. على سبيل المثال:
- Uptime Kuma على المنفذ 3001
- Grafana على المنفذ 3000
استخدم اسمًا خاصًا للخدمة تحت services، بنفس مستوى التباعد مثل web. اقرأ مثال Docker الرسمي الخاص بالخدمة للحصول على الصورة المطلوبة والمنفذ والتخزين. استخدم منفذ مضيف متاح وحد الوصول إلى بيئة التدريب. وسم latest ليس إصدارًا مثبتًا.
شغّل أولًا أمر docker compose config --quiet. ثم ابدأ باستخدام `docker compose up -d وتأكد من أن الخدمتين تعملان في نفس الوقت. إذا كنت تستخدم ربط المخرجات كما هو الحال مع Nginx، فتقني المنفذ من آلة افتراضية؛ يتطلب الوصول من جهاز آخر تحديد عنوان ومنفذ وشبكة بشكل مستقل.
اعرض مخرجات docker compose ps واستجابة متوقعة لكل خدمة على العنوان والمنفذ الذي قمت بتكوينه فعليًا. فسر شفهيًا أو كتابيًا ما ينشئه Compose تلقائيًا، وما لا يزال عليك ترتيبه بنفسك، مثل البيانات والإعدادات والنسخ الاحتياطي. إذا توقفت إحدى الخدمات، اقرأ سجلات docker compose logs قبل تعديل الإعداد. أنهِ أي تتبع للسجلات بـ Ctrl+C.
ملخص
- يتيح لك Docker Compose تعريف عدة خدمات في ملف واحد
- ملف Compose هو إعدادات وتوثيق معًا
- التحديث يتم عبر
docker compose pull+docker compose up -d - يسهّل Docker نقل الخدمات بين الخوادم
المصادر: Docker Compose: المشروع الأولي وخدمات Compose.