الدرس 16: الحاجة إلى Docker Compose
حتى الآن، قمنا بإدارة الخدمات (مثل PostgreSQL, Nginx، أو تطبيق مخصص) واحدة تلو الأخرى باستخدام أوامر docker run الطويلة، مع تحديد الشبكات والمجلدات ومتغيرات البيئة يدوياً.
قيود واجهة سطر أوامر Docker (CLI) لتطبيقات متعددة الخدمات
فكر في تشغيل تطبيق حديث نموذجي: تطبيق ويب، قاعدة بيانات، وذاكرة تخزين مؤقت (Redis).
تتطلب إدارة هذا المكدس يدوياً تشغيل وصيانة ثلاثة أوامر منفصلة وطويلة:
docker run -d --name db ...docker run -d --name cache ...docker run -d --name web -p 80:80 --network ...
هذا النهج:
- عرضة للخطأ: من السهل نسيان علامة (flag) أو إعداد شبكة.
- صعب المشاركة: من الصعب دمج أعضاء الفريق الجدد؛ يجب عليهم نسخ/لصق أوامر متعددة.
- صعب التوسع: من الصعب إدارة التبعيات وترتيب بدء التشغيل.
تقديم Docker Compose
يحل Docker Compose هذه المشكلات من خلال السماح لك بتحديد مكدس التطبيق متعدد الحاويات بالكامل في ملف تكوين واحد: docker-compose.yml (أو compose.yml).
فوائد Docker Compose
- النشر بأمر واحد: بدء أو إيقاف مكدس التطبيق بالكامل بأمر واحد (
docker compose up). - اكتشاف الخدمة: يقوم Compose تلقائياً بإعداد شبكة bridge مخصصة، مما يسمح للخدمات بالعثور على بعضها البعض بالاسم.
- قابلية النقل: يحدد ملف
compose.ymlالبيئة، مما يجعله قابلاً للنقل بنسبة 100%. - التكوين ككود (Configuration as Code): يتم التحكم في إصدار إعدادات البيئة والمجلدات والشبكات جنباً إلى جنب مع كود التطبيق الخاص بك.