‫تحدثنا سابقًا عن ملف Docker Compose YAML وفي هذه المحاضرة ، سنتحدث
‫عن سطر أوامر الإنشاء. متطلبات هذه المحاضرة شبيهة ببقية هذا القسم حيث تحتاج
‫حقًا إلى معرفة الصور والحاويات ، وكيفية استخدامها والمفاهيم المحيطة بها من الأقسام السابقة ، بحيث يمكنك
‫استخدام كل تلك الموجودة داخل أمر الإنشاء و YAML ملف. أداة سطر أوامر Docker Compose
‫منفصلة بالفعل عن أداة Docker.
‫إنه في الواقع ثنائي منفصل. إذا كنت تستخدم Docker لنظام التشغيل Windows أو Docker لنظام
‫التشغيل Mac ، فهو يأتي مع ذلك في الواقع.
‫إذا كنت تستخدم أيضًا مربع الأدوات على نظام التشغيل Windows 7 ، فسيتم تجميعه مع ذلك.
‫ولكن إذا كنت تستخدم نظام Linux ، فيجب عليك تنزيله بشكل منفصل ويمكنك الحصول عليه من GitHub. com / docker / compose ، ولكن يمكنك
‫أيضًا البحث عنه على Google ، وسيكون هناك رابط في المراجع الخاصة بهذا
‫القسم.
‫لكن يجب أن أصرح سريعًا حقًا أنه لم يتم تصميمه ليكون أداة على مستوى الإنتاج.
‫إنه مثالي للغاية للتطوير المحلي واختبار الأشياء بسرعة كبيرة والتي قد تكون معقدة لكتابة
‫مجموعة من الأوامر من سطر الأوامر. هناك أمران شائعان نستخدمهما هما إنشاء
‫عامل ميناء ، وهو على الأرجح ما ستكتبه بنسبة 90٪ من الوقت.
‫إنه متجر شامل.
‫إنه في الأساس أمر واحد للقيام بكل شيء في ملف الإنشاء ، بما في ذلك إنشاء وحدات التخزين ، وإنشاء الشبكات ، وبدء جميع
‫الحاويات بجميع خيارات التكوين الخاصة بها. ثم للتنظيف عند الانتهاء ، يقوم
‫عامل الميناء
‫بتكوينه ، وهو ما ينسى الكثير من الناس فعله بالفعل ، سوف يقوم
‫بالتنظيف بعدك. سيتخلص من الحاويات ويزيل الشبكات والأحجام التي لم تعد بحاجة إليها.
‫يسمح لك ، بهذين الأمرين ، بالقفز بسرعة داخل وخارج البيئات المختلفة للتطوير.
‫هذا هو المكان الذي جذب انتباه المطورين الذين اعتادوا استخدام أدوات التشرد وغيرها
‫من الأدوات لتخصيص البيئات المعقدة محليًا التي يحتاجون إليها للتطوير.
‫بمجرد أن أعرض عليهم Docker Compose وملف الإنشاء ومدى سهولة استخدامه مع Dockerfile
‫، يبدأ حقًا في النقر عليهم أن هذا قد يكون طريقة أفضل وطريقة أكثر موثوقية لإعداد بيئاتهم.
‫ولا يتطلب الأمر وقتًا لإعداد أجهزة افتراضية
‫مختلفة أو تعقيد إدارة بيئة جهاز ظاهري.
‫فقط لإعطائك القليل من الذوق ، إذا كان لديك مشروع كان لديك فيه عملية الإعداد النموذجية للمطورين الجدد والتي كانت تدور حول
‫تعلم كيفية الحصول على الأدوات المناسبة لنظامهم ، والأجهزة الافتراضية المناسبة التي تم تنزيلها
‫، والإضافات المناسبة ، وجميع الأشياء التي عادةً ما يحتاجون إليها فقط لبناء بيئة مكررة
‫من أجلها ، باستخدام Docker Compose ، يكون الأمر سهلاً
‫مثل استنساخ البيئة التي تحتوي على ملف الإنشاء الخاص بك من بعض الريبو في مكان ما ثم تشغيل أمر إنشاء عامل
‫ميناء التحميل.
‫يمكن حقا أن يكون بهذه السهولة.
‫دعنا نقفز ونلعب. أنا في دليل تكوين العينة 2. كان دليل تكوين العينة 1 مجرد بعض
‫الأمثلة المرئية التي عرضناها في المحاضرة الأخيرة.
‫لكن في هذا ، سنتمكن من تشغيل هذا والحصول على مخرجات سريعة.
‫أنا فقط سأقوم بتأليف عامل الرصيف.
‫حسنًا ، في الواقع قبل أن نفعل ذلك ، دعوني أريكم ما هو عليه.
‫يحتوي هذا على خدمتين ، أو حاويتين ، والأولى هي خادم Nginx الذي تم تكوينه كوكيل
‫في هذه الحالة.
‫وهذا سيستمع على المنفذ 80 الخاص بي على جهازي المحلي.
‫ستلاحظ وجود أمر حجم هناك حيث قمت بالفعل بربط تحميل ملف في هذا الدليل يسمى ملف التكوين
‫nginx ، وهو في الحقيقة ملف صغير بسيط للغاية.
‫ليس من المهم بالضرورة أن نعرف كيف يعمل هذا الملف حتى الآن. إنه يوضح فقط كيف ، في هذه الحالة ، أنا
‫في الواقع آخذ ملفًا عن بيئتي المحلية. لنفترض أن هذا الدليل هو مستودع
‫Git يخزن ملفات التكوين هذه لي. يسمح لي بتعيين هذا الملف في الحاوية وأنا في الواقع ، في النهاية
‫، سترى أنه يقول ، "ro" ، وهذا يعني القراءة فقط ، مما يعني أنه لا يمكنني تغييره في الحاوية.
‫هذا ليس بالضرورة مطلوبًا هنا. أردت فقط أن أوضح لك أن هذه هي الطريقة
‫التي ستفعل بها ذلك في هذه الحالة. يخبر ملف التكوين هذا في الواقع
‫Nginx ، "بدلاً من أن تكون
‫خادم ويب ، أود منك أن تكون وكيلاً عكسيًا ، وأن تجلس أمام خادم آخر" ، والذي في هذه الحالة
‫نطلق على خادم الويب الخاص بنا ، مع خدمته الاسم ، ويتم تشغيل خادم Apache 2 ، وهو صورة httpd من مستودع الصور
‫الرسمي على Docker Hub.
‫يمكنك أيضًا أن ترى ، في الجزء العلوي ، لقد حددت إصدارًا هنا. هكذا سأفعل ذلك.
‫داخل خط الصورة.
‫لذا ، ما يجب أن يحدث هو عندما أكتب عامل الإرساء هذا ، يجب أن يبدأ تشغيل كلتا الوعاءين. يجب أن تنشئ شبكة خاصة
‫لكليهما.
‫سيتم ربط تحميل هذا الملف تلقائيًا.
‫سيفتح المنفذ ، وسيبدأ بإلقاء سجلات الخروج على شاشتي.
‫سترى كيف هناك ، كما قال ، "إنشاء هاتين الوعاءين. إنها في الواقع تنشئ
‫الشبكة.
‫ستلاحظ في ملفي ، أنني لم أحدد منطقة شبكات ، أو منطقة وحدات تخزين لأنها غير مطلوبة
‫في الواقع.
‫إنها ضرورية فقط إذا كنت بحاجة إلى القيام ببعض الأشياء المخصصة في الشبكة ، مثل ربما تغيير عناوين IP الافتراضية
‫أو تغيير برنامج تشغيل الشبكة المستخدم.
‫أو في حالة الأحجام ، يمكنني إنشاء مجلدات مسماة ، أو استخدام مشغل وحدة تخزين مختلف ، وسنتناول
‫كل ذلك لاحقًا في الأقسام المتقدمة.
‫فقط لكي تعرف ، هذا هو مدى بساطة هذه الملفات.
‫لا تحتاج عادةً إلى كل هذه الأشياء.
‫هذه الميزات موجودة إذا كنت في حاجة إليها ، ولكن عادةً ما تساعدك هذه الأوامر البسيطة جدًا والصغيرة مثل هذه
‫على المضي قدمًا.
‫ماذا فعلت؟ هذا الآن خادم Apache وخادم Nginx الخاص بي.
‫ستلاحظ أن السجلات ملونة بالفعل هنا.
‫هذه ميزة رائعة لـ Compose والتي لا يمكنك بالضرورة إخراجها من الصندوق باستخدام
‫Docker وهي أنها ستسجل جميع الحاويات التي يتم تشغيلها على الشاشة في المقدمة.
‫يمكنني دائمًا القيام بنفس الشيء الذي أفعله مع Docker وتشغيل docker compose
‫up -d ، والذي سيعمل على تشغيله في الخلفية. لكن من الجيد أن أرى عندما أقوم بتطوير الأشياء أو اختبارها محليًا ، أنني
‫حصلت على سجلاتي مباشرة على الشاشة.
‫إذا قفزت إلى المتصفح الخاص بي ، ثم انتقلت إلى المضيف المحلي ، فسترى أنه يقول ، "إنه يعمل. هذا في الواقع يرد خادم
‫Apache ، وليس خادم Nginx.
‫تمر حركة المرور بالفعل عبر وكيل Nginx العكسي.
‫إنها تكرر حركة المرور إلى خادم Apache. يستجيب خادم Apache بملف HTML الأساسي
‫الافتراضي الخاص به لأننا لم نغير أي شيء.
‫ثم يقوم Nginx بتكرارها لي.
‫لذلك ، فهو خادم الويب الأساسي ، تكوين وكيل الويب.
‫يمكنك معرفة أن حركة المرور أصابت كلاهما. إنهم يعملون بالفعل من خلال
‫الوكيل لأن الوكيل
‫هو في الواقع لون مختلف هنا. يتم ضخ السجلات هنا بلون عشوائي لكل حاوية في الإعداد الخاص بي حتى
‫أتمكن من رؤية ما يحدث بسهولة.
‫إذا قمت بالضغط على تحديث عدة مرات ، فسترى ظهور حركة المرور. ثم يضرب الوكيل أولاً ثم خادم
‫الويب الخلفي.
‫إذا كنت أرغب في إيقاف هذا هنا ، فاضغط على Control c لإيقاف الإنشاء في شاشتي.
‫يمكنني بالفعل تشغيله مرة أخرى باستخدام -d لتشغيله في الخلفية.
‫يمكنك أن ترى هنا أنه يمكنني تحديثه ولا يزال موجودًا. يمكنني عمل سجلات تكوين عامل الإرساء لرؤية نفس إخراج السجلات
‫التي رأيتها منذ فترة.
‫الكثير من الأوامر التي قد تكون معتادًا عليها في Docker موجودة أيضًا في Docker Compose. ما يفعله Compose حقًا
‫هو التحدث إلى Docker API في الخلفية
‫نيابة عن Docker CLI. إنه يشبه إلى حد ما بديلاً لـ Docker CLI الذي لا يزال يتحدث إلى واجهة
‫برمجة تطبيقات خادم Docker في الواجهة الخلفية.
‫بالطبع ، المساعدة الكبيرة هنا ، المساعدة في إنشاء عامل الميناء ، تُظهر لي جميع الأوامر التي يمكنني تشغيلها.
‫سترى الكثير من هذه الأشياء تبدو مألوفة حقًا لأنها مكافئة لأمر
‫عامل الإرساء فقط باستخدام سياق تكوين ملف الإنشاء.
‫أريد تنظيف كل هذا لأنهم ما زالوا قيد التشغيل. يمكنني عمل عامل إرساء يؤلف ملاحظة هنا ، مما سيظهر لي أن كلا
‫الحاوية الخاصة بي تعمل.
‫يمكنني أن أقوم بعمل عامل إنشاء أعلى لسرد جميع الخدمات التي تعمل بداخلها في
‫إخراج منسق لطيف.
‫هذا رائع.
‫ثم أخيرًا ، يمكنني أن أقوم بتأليف عامل ميناء لإيقاف وتنظيف أشيائي التي بدأتها للتو.
‫سترى أنه يخبرني بما تم القيام به هناك. نظف كل شيء.
‫عظيم جدا.
‫هذا مجرد ذوق صغير.
‫سنستخدم Docker Compose كثيرًا خلال الفترة المتبقية من هذه الدورة التدريبية
‫للتطوير المحلي واختبار الأشياء. ثم سنستمر في استخدام ملفات Docker Compose بينما
‫ننتقل إلى مخاوف الإنتاج الخاصة بكيفية نشر البيئات المعقدة باستخدام ملف YAML بسيط.