نظرًا لتطور صناعة التكنولوجيا بوتيرة سريعة ، يتزايد الطلب على تطوير برمجيات رشيقة وقابلة للتطوير وفعالة. تركت Docker بالفعل علامة لا تمحى على الصناعة من خلال تقديم الحاويات ، وتمكين المطورين من إنشاء التطبيقات وشحنها وتشغيلها في بيئات متسقة وقابلة للتكرار. تم تصميم Docker Compose ، وهو مكون قوي في نظام Docker البيئي ، لتحسين إدارة التطبيقات متعددة الحاويات بشكل أكبر.
يطمح هذا الدليل الشامل إلى توفير فهم متعمق لـ Docker Compose وأهميته في تطوير البرامج الحديثة وميزاته وفوائده الرئيسية. سوف نستكشف المفاهيم والمكونات الأساسية التي تحدد نظام Docker Compose البيئي ، ونزودك بالمعرفة اللازمة للاستفادة من إمكاناتها في مشاريعك والمساهمة في مجتمع Docker الآخذ في التوسع.
في هذا الاستكشاف لـ Docker Compose ، سنغطي:
- تنظيم الحاويات : نظرة عامة موجزة على تنظيم الحاويات والحاجة إلى إدارة فعالة لتطبيقات الحاويات.
- Docker Compose : مقدمة إلى Docker Compose وميزاتها الرئيسية ومزاياها في سياق تنسيق الحاوية.
- إنشاء ملف وخدمات : نظرة عميقة في بنية ملف الإنشاء ، ودور الخدمات ، وأهمية تحديد مكونات التطبيق.
- الشبكات والأحجام : مناقشة حول خيارات الشبكات والتخزين المتاحة داخل Docker Compose وكيف تسهل الاتصال السلس بين الحاويات واستمرارية البيانات.
- القياس وموازنة الحمل : فحص لكيفية تمكين Docker Compose من توسيع نطاق التطبيقات المعبأة في حاويات وموازنة الحمل الفعالة لاستيعاب الطلب المتزايد.
- سير العمل وأفضل الممارسات : نظرة على سير العمل النموذجي لاستخدام Docker Compose وبعض أفضل الممارسات الموصى بها لضمان الأداء الأمثل.
انضم إلينا بينما نتعمق في عالم Docker Compose ، ونستعد لتحسين مهاراتك في تنظيم الحاويات ، مما يمهد الطريق لعمليات تطوير برامج أكثر بساطة وكفاءة.
نظرة عامة على Docker Compose
Docker Compose هي أداة مفتوحة المصدر تعمل على تبسيط عملية تعريف تطبيقات Docker متعددة الحاويات وتكوينها وإدارتها. من خلال تقديم طريقة غير معقدة للإعلان عن خدمات متعددة وتوصيلها باستخدام ملف YAML واحد ، يعمل Docker Compose على تحسين عملية التطوير والاختبار والنشر بشكل كبير. نتيجة لذلك ، يمكن للمطورين التركيز على كتابة التعليمات البرمجية دون القلق بشأن البنية التحتية الأساسية.
توسيع الميزات الرئيسية
- إنشاء ملف : باستخدام ملف YAML ، المسمى عادةً docker-compose.yml ، يتيح لك Docker Compose تحديد خدمات التطبيق والشبكات ووحدات التخزين. يعمل هذا الملف كمخطط شامل للتطبيق بأكمله ، مما يبسط إدارة تكوين التطبيق وإعادة إنتاجه ومشاركته.
- الخدمات : في Docker Compose ، تشير الخدمات إلى مثيلات حاوية فردية تم إنشاؤها من صور Docker محددة. هذه الخدمات هي أساس تطبيق متعدد الحاويات ويمكن ربطها ببعضها البعض من خلال الشبكات أثناء مشاركة البيانات باستخدام وحدات التخزين.
- الشبكات : يعمل Docker Compose على تسهيل إنشاء شبكات مخصصة لتطبيقات الحاويات ، مما يتيح الاتصال السلس بين الخدمات. على الرغم من إنشاء Compose تلقائيًا لشبكة واحدة لجميع الخدمات بشكل افتراضي ، يمكنك أيضًا تحديد شبكات إضافية لعزل خدمات معينة أو إنشاء طبولوجيا معقدة.
- وحدات التخزين : يوفر Docker Compose وحدات تخزين لاستمرار البيانات التي تم إنشاؤها واستخدامها بواسطة حاويات Docker. تسهل الأحجام مشاركة البيانات بين الحاويات وتضمن الاحتفاظ بالبيانات عند إزالة الحاوية أو تحديثها.
- التحجيم : باستخدام Docker Compose ، يمكنك بسهولة توسيع نطاق الخدمات لإدارة أعباء العمل المتزايدة عن طريق ضبط عدد مثيلات الحاوية لخدمة معينة. يمكن القيام بذلك باستخدام سمة المقياس أو خيار سطر الأوامر - مقياس.
- استبدال متغير البيئة : يدعم Docker Compose استبدال متغير البيئة ، مما يتيح لك تخصيص ملف Compose لبيئات أو مراحل مختلفة من خط أنابيب التطوير الخاص بك. تتيح هذه الميزة زيادة المرونة والتخصيص عبر سيناريوهات النشر المختلفة.
استخدم حالات
يعد Docker Compose مثاليًا للعديد من السيناريوهات ، مثل:
- التطوير والاختبار المحلي : يمكن للمطورين استخدام Docker Compose لإنشاء نسخة طبق الأصل من بيئة الإنتاج على أجهزتهم المحلية ، مما يضمن سلوكًا متسقًا عبر مراحل دورة حياة التطوير المختلفة.
- التكامل المستمر والنشر المستمر ( CI/CD ): يمكن دمج Docker Compose في خطوط أنابيب CI/CD لإنشاء تطبيقات متعددة الحاويات واختبارها ونشرها ، مما يسهل عملية التطوير.
- بنية الخدمات المصغرة : باستخدام Docker Compose ، يمكنك بسهولة إدارة وتنظيم التطبيقات المستندة إلى الخدمات المصغرة المعقدة ، مما يتيح الاتصال الفعال والتعاون بين الخدمات المختلفة.
Docker Compose هي أداة قوية تعمل على تبسيط تنسيق وإدارة التطبيقات متعددة الحاويات. تعمل قدرتها على تحديد الخدمات وتكوينها وتوصيلها من خلال ملف YAML واحد على تحسين عملية التطوير وتسمح بقياس وصيانة التطبيقات المعبأة في حاويات بكفاءة.
وأوضح تكوين YAML
YAML ، اختصار لـ " YAML Ain't Markup Language" ، هو تنسيق تسلسل بيانات يمكن قراءته بواسطة الإنسان مصمم للبساطة وسهولة الاستخدام. يتم استخدامه بشكل متكرر في صناعة تطوير البرامج لملفات التكوين ، وتبادل البيانات بين اللغات ذات هياكل البيانات المختلفة ، وكبديل يسهل الوصول إليه لتنسيقات مثل XML أو JSON . يستخدم YAML بنية مبسطة تعتمد على المسافة البادئة ، مما يجعلها جذابة بصريًا وتعزز فهمًا أفضل للعلاقات الهرمية بين عناصر البيانات.
على سبيل المثال ، في تكوين تطبيق الويب ، قد يحدد المطور إعدادات قاعدة البيانات ومفاتيح واجهة برمجة التطبيقات وتفضيلات التخزين المؤقت باستخدام ملف YAML منظم. من خلال الاستفادة من ميزات YAML ، مثل المراسي والأسماء المستعارة والعلامات المخصصة ، يمكن للمطورين تقليل التكرار وتحسين إمكانية صيانة مشاريعهم. يعد اعتماد YAML على نطاق واسع دليلاً على فعاليته في تبسيط التكوينات المعقدة وتبسيط الاتصال بين أعضاء الفريق ومكونات البرامج.
Docker Compose - التثبيت
تعد Docker Compose أداة لا تقدر بثمن في مجال تطوير البرامج ، حيث إنها تسهل إدارة وتنسيق تطبيقات Docker متعددة الحاويات. باستخدام Docker Compose ، يمكن للمطورين تحديد مكدس التطبيقات بالكامل وتكوينه بسهولة ، بما في ذلك الخدمات والشبكات ووحدات التخزين ، وكل ذلك في ملف YAML واحد. يتيح هذا النهج المبسط معالجة متسقة وفعالة للتطبيقات المعبأة في حاويات خلال مراحل التطوير والاختبار والإنتاج.
لتثبيت Docker Compose ، ابدأ بتأكيد تثبيت Docker وتشغيله بشكل صحيح على نظامك. بعد ذلك ، ستختلف عملية تثبيت Docker Compose بناءً على نظام التشغيل الخاص بك. على سبيل المثال ، في Linux ، يمكنك الحصول على أحدث إصدار من Compose من GitHub باستخدام أمر curl ، والتقدم بطلب للحصول على أذونات قابلة للتنفيذ ، ونقل الملف الثنائي إلى موقع داخل مسار النظام. على العكس من ذلك ، يأتي Docker Compose مُجهزًا مسبقًا مع Docker Desktop لنظامي التشغيل macOS و Windows ، مما يبسط عملية التثبيت بشكل كبير.
من الأمثلة الواقعية التي تعرض قدرات Docker Compose تطوير تطبيق ويب يتطلب خدمة الواجهة الأمامية وخدمة واجهة برمجة التطبيقات الخلفية وخدمة قاعدة البيانات. من خلال تثبيت Docker Compose بنجاح ، يمكن للمطورين استخدام تكوين YAML البديهي والقابل للصيانة لتحديد التطبيقات المعقدة متعددة الحاويات ، مما يؤدي في النهاية إلى تحسين سير عمل التطوير وتسريع تسليم البرامج.
إنشاء ملف Docker-Compose الأول الخاص بك
يعد إنشاء ملف Docker-Compose الأول الخاص بك خطوة أساسية في تبسيط إدارة التطبيقات متعددة الحاويات وتبسيطها. Docker-Compose هي أداة قوية تتيح لك تحديد حاويات متعددة وتكوينها وتشغيلها كوحدة واحدة ، مما يؤدي إلى تحسين تجربة التطوير والنشر الشاملة. للبدء ، ستحتاج إلى تثبيت Docker و Docker-Compose على جهازك المحلي. بمجرد التثبيت ، قم بإنشاء ملف باسم " docker-compose.yml " في الدليل الجذر لمشروعك. في هذا الملف ، ستحدد خدماتك وشبكاتك ووحدات التخزين باستخدام صيغة YAML.
على سبيل المثال ، لنفترض أن لديك تطبيق ويب يتكون من واجهة أمامية مبنية باستخدام React وواجهة برمجة تطبيقات خلفية تم تطويرها باستخدام Node.js وقاعدة بيانات MongoDB . ستحدد ثلاث خدمات في ملف docker-compose.yml - واحدة لكل مكون. بالإضافة إلى تحديد صور Docker لكل خدمة ، يمكنك أيضًا تحديد متغيرات البيئة واتصالات الشبكة والتخزين الدائم من خلال وحدات التخزين. مع وجود ملف Docker-Compose الخاص بك في مكانه ، يمكنك بعد ذلك تنفيذ " docker-compose up " في الجهاز لبناء وبدء جميع الخدمات ، مما يجعل من السهل إدارة ونشر تطبيقك متعدد الحاويات باستمرار عبر بيئات مختلفة.
فيما يلي مثال على ملف docker-compose.yml بسيط لتطبيق ويب يتكون من واجهة React الأمامية وخلفية Node.js وقاعدة بيانات MongoDB:
في هذا المثال ، يحدد قسم الخدمات ثلاث خدمات: الواجهة الأمامية والخلفية وديسيبل. تحتوي كل خدمة على تكوين فريد ، مثل سياق الإنشاء والصورة والمنافذ والتبعيات ومتغيرات البيئة والشبكات.
تستخدم خدمة frontend سياق البناء ./frontend to build تطبيق React ، ويعتمد ذلك على خدمة backend. تستخدم خدمة backend سياق الإنشاء ./backend لإنشاء تطبيق Node.js ، ويعتمد ذلك على خدمة db. تُستخدم متغيرات البيئة ، مثل DATABASE_URL ، لتمرير تفاصيل التكوين إلى الواجهة الخلفية.
تستخدم خدمة db صورة MongoDB الرسمية من Docker Hub وتحدد وحدة تخزين تسمى myapp-data لاستمرار البيانات.
أخيرًا ، تحدد أقسام networks ووحدات volumes في الجزء السفلي شبكة مخصصة تسمى myapp-network باستخدام برنامج تشغيل الجسر ووحدة تخزين مسمى تسمى myapp-data. تُستخدم هذه العناصر لربط الخدمات واستمرار البيانات.