Docker Compose هي أداة يمكن استخدامها لإدارة نشر العديد من حاويات Docker المختلفة بشكل مركزي. إنها أداة مهمة لأي تطبيق يتطلب خدمات مصغرة متعددة لأنه يسمح بسهولة وضع كل خدمة في حاوية مُدارة بشكل منفصل.
ماذا يفعل Docker Compose؟
تُستخدم حاويات Docker لتشغيل التطبيقات في بيئة معزولة. في الوقت الحاضر ، من الشائع جدًا رؤية الفوائد العديدة لنشر التطبيق في Docker. ومع ذلك ، فعادةً لا يكون الأمر بسيطًا مثل تشغيل حاوية واحدة. عادة ، قد يكون لديك العديد من الحاويات مجتمعة معًا لتكون بمثابة خدمة متماسكة تتكون من العديد من الأجزاء المتحركة.
من الصعب إدارة كل هذا أثناء النشر ، لذا لتنظيفه ، يوفر Docker Docker Compose ، وهي أداة تكوين لتشغيل عدة حاويات في نفس الوقت. يمكنك تحديد جميع التكوينات في ملف YAML ثم بدء تشغيل جميع الحاويات بأمر واحد.
لا يحتاج Docker Compose إلى وضع جميع الخدمات في حاوية كبيرة واحدة ، ولكن يمكنه تقسيمها إلى حاويات يمكن التحكم فيها بشكل فردي. يعد هذا خيارًا أفضل لكل من الإنشاء والنشر ، لأنه يمكنك إدارة جميع الحاويات في قاعدة رموز منفصلة دون الحاجة إلى بدء كل حاوية يدويًا.
تنقسم عملية استخدام Docker Compose إلى ثلاث خطوات:
- استخدم Dockerfile الخاص به لإنشاء صور للمكونات ، أو استخراجها من التسجيل.
- حدد جميع خدمات المكون في أحد المكونات
docker-compose.yml
ملف. - استعمال
docker-compose
CLI.
Docker Compose ليس ملف Dockerfile آخر. ما زلت بحاجة إلى استخدام Dockerfile لإنشاء ونشر حاويات Docker. ومع ذلك ، يمكنك استخدام Docker Compose لإدارة تكوين عمليات النشر متعددة الحاويات بدلاً من تشغيلها مباشرةً.
كيف تستخدم Docker Compose؟
تكوين ملف تكوين Docker بتنسيق docker-compose.yml
. لا تحتاج إلى وضعه في الدليل الجذر للمشروع مثل Dockerfile. في الواقع ، يمكن رؤيته في كل مكان لأنه لا يعتمد على أي رمز آخر. ومع ذلك ، إذا كنت ترغب في إنشاء الصورة محليًا ، فأنت بحاجة إلى وضعها في مجلد المشروع مع الكود المطلوب إنشاؤه.
يتم عرض ملف تكوين الإنشاء أدناه.يستخدم هذا التكوين لتشغيل مثيل WordPress wordpress
حاويات على Docker Hub. ومع ذلك ، فإنه يعتمد على قاعدة بيانات MySQL التي أنشأتها أيضًا Compose.
version: '3' companies: db: image: mysql:5.7 volumes: - db_knowledge:/var/lib/mysql restart: often ecosystem: MYSQL_ROOT_PASSWORD: rootpasswordchangeme MYSQL_Databases: wordpress MYSQL_Consumer: usernamechangeme MYSQL_PASSWORD: passwordchangeme wordpress: is dependent_on: - db impression: wordpress:hottest ports: - "8000:80" restart: always ecosystem: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_User: usernamechangeme WORDPRESS_DB_PASSWORD: passwordchangeme volumes: db_facts:
دعونا نلقي نظرة على تنسيق الملف. أولاً ، هو رقم الإصدار ، لأن بناء الجملة سيتغير بناءً على الإصدار الذي تستخدمه.
التالي هو قائمة الخدمات.أول واحد يسمى “ديسيبل” ويستخدم mysql:5.7
يتم تعيين الحاوية على إعادة التشغيل دائمًا ، ويتم تكوين قاعدة البيانات بالمستخدم وكلمة المرور باستخدام متغيرات البيئة. من أجل الحفاظ على البيانات أثناء إعادة التشغيل ، تم تكوين هذه الصورة باستخدام وحدة تخزين Docker مثبتة على دليل بيانات MySQL.
خدمة أخرى هي “wordpress” ، والتي تعتمد على خدمة قاعدة البيانات للتأكد من أن Docker يضمن بدء تشغيل قاعدة البيانات قبل التشغيل. يعرض المنفذ 80 كمنفذ 8000 ويضع بعض متغيرات البيئة بحيث يمكنه الاتصال بـ MySQL.يرجى ملاحظة أنه تم تعيين مضيف قاعدة البيانات على db:3306
، فإنه يخبر حاوية WordPress بالاتصال بخدمة “db”.
أخيرًا ، حدد الحجم على أنه تخزين دائم. (اختياري) يمكنك أيضًا تحديد شبكة مخصصة للحاوية. يمكنك تكوين العديد من الخيارات الموسعة ، لذلك إذا كنت تريد القيام بعملية معينة ، يجب عليك التحقق من وثائق Docker Compose.
بعد اكتمال التكوين ، من السهل بدء هذه الخدمة.مجرد تشغيل docker-compose up
، سيؤدي ذلك إلى سحب جميع الحاويات اللازمة وبدء خدمتك.
docker-compose up -d
يجب أن ترى الخدمات قيد التشغيل على النظام docker ps
. في هذه الحالة ، سترى WordPress يعمل بشكل طبيعي.
البناء باستخدام Docker Compose
يمكن أيضًا استخدام Docker Compose في مشاريع Dockerfile ويمكن ضبطه لإنشاء الصور وتشغيلها محليًا بدلاً من السحب من Docker Hub.
للقيام بذلك ، ما عليك سوى إضافة ملف create
جزء الخدمة. يمكنك تعيين أدلة سياق مختلفة وملفات Dockerfiles مختلفة لصور مختلفة.
model: "3.8" providers: webapp: create: context: ./dir dockerfile: Dockerfile-alternate impression: imagename:tag
في ظل هذه الظروف ، graphic:
تم تعيين المتغير أيضًا ، ولكن هنا يتم استخدامه لتمييز الصورة التي أنشأها Docker Compose.