‫حسنا. دعونا نلقي نظرة على المزيد من أمثلة Dockerfile.
‫في مستودعنا الذي قمت بتنزيله من Github الخاص بي ، دعنا ننتقل إلى نموذج Dockerfile رقم 2.
‫هذه المرة ، لدينا بالفعل ملفان.
‫لدينا ملف Dockerfile. والآن لدينا فهرس. لغة البرمجة.
‫سوبر بسيط. مرحبا بالعالم. لغة البرمجة.
‫ليس من المهم حقًا فهم HTML.
‫سنقوم فقط بنسخها في صورة الحاوية الخاصة بنا أثناء بنائها.
‫إذا نظرنا إلى Dockerfile ، فسترى في هذا أننا نستخدم Nginx كأمر
‫FROM.
‫نحن لا نبني Nginx الخاص بنا لأنه من الناحية المثالية ، إذا كان بإمكانك استخدام صورة رسمية
‫لإنجاز المهمة من Docker Hub ، فسيكون من الأسهل عليك الاحتفاظ بملف Dockerfile هذا والحفاظ عليه
‫يعمل بشكل جيد.
‫في سيناريوهات أبسط ، غالبًا ما تكون الصورة الرسمية هي العمل. ولكن عندما تنمو وتضيف التعقيد إلى بيئتك
‫وأنظمتك ، ستجد على الأرجح أنك بحاجة إلى إضافة برامج مخصصة إضافية ، أو تغيير
‫طريقة بدء تشغيله ، أو إضافة نصوص بحيث تقوم بتعديل التكوين.
‫ولكن عندما أبدأ مشروعًا جديدًا ، أو إذا كنت أقوم بتحويل بعض التطبيقات القديمة ، فأنا دائمًا
‫أبدأ بالصور الرسمية من Docker Hub. ثم بمجرد أن أصطدم ببعض الحواجز ولم أتمكن من استخدام
‫تلك الصورة بعد الآن ، قد أعود إلى Docker Hub وألقي نظرة أخرى وأرى ما إذا كان هناك أي شيء
‫مخصص هناك شائع حقًا ، ويمكنني الوثوق به والنظر فيه معرفة ما إذا كان سيحل مشكلتي.
‫لكن لا حرج في بناء منزل خاص بك.
‫إنه مجرد المزيد من العمل والمزيد من الصيانة بمرور الوقت.
‫لذلك هذا بسيط للغاية. لدينا ثلاثة مقاطع.
‫لقد رأيت من قبل. وهذه المرة لدينا WORKDIR.
‫الآن هذا هو مجرد إجراء تغيير في دليل مساحة القرص المضغوط. لذلك قد تميل إلى استخدام الأمر run واكتب الأمر
‫run cd لهذا الدليل ثم قم ببعض الأشياء. ولكن أفضل ممارسة حقًا لـ Dockerfiles
‫هي استخدام مقطع WORKDIR منفصل كلما قمت بتغيير الدلائل.
‫لذلك إذا أصبح ملفك معقدًا بعض الشيء وكان عليك التحرك ذهابًا وإيابًا في الحاوية الخاصة
‫بك للقيام بالأشياء أثناء البناء ، فأنت تريد دائمًا استخدام WORKDIR لأنه من الأسهل كثيرًا وصف ما تفعله
‫في Dockerfile.
‫في هذه الحالة ، ما نقوم به هنا هو أننا نقوم بالتغيير إلى دليل Nginx الافتراضي
‫لملفات HTML الخاصة به.
‫في التكوين الافتراضي على Docker Hub ، يعمل Nginx كخادم ويب فقط ، ويقوم فقط بتقديم
‫الملفات الثابتة مباشرة من قرص الحاوية.
‫المقطع الأخير هنا ، لدينا ، هو النسخة. وهذا هو المقطع الذي ستستخدمه دائمًا لنسخ كود
‫المصدر الخاص بك من جهازك المحلي ، أو خوادم البناء ، إلى صور الحاوية الخاصة بك.
‫في هذه الحالة ، نأخذ فقط الفهرس البسيط. html ونحن نقوم بالكتابة فوق الملف في الدليل
‫الافتراضي Nginx بحيث تكون صفحتنا الرئيسية المخصصة لخادم الويب.
‫قبل أن نبني هذا ، ستلاحظ أننا نفتقد المقاطع المطلوبة ، مثل cmd.
‫فكيف يمكننا التخلص من ذلك؟
‫حسنًا ، هناك بالفعل cmd محدد في الصورة من FROM.
‫وعندما نستخدم FROM ، فإننا نرث كل شيء من Dockerfile نحن "من" ، حتى لو كانت كلمة واحدة.
‫هذه هي الطريقة التي يمكنك بها تجميع Dockerfiles معًا بحيث تعتمد الصور على الصور الأخرى
‫التي تعتمد على الصور الأخرى.
‫حسنا. دعونا نرى كيف يعمل هذا.
‫قبل أن نبني هذا ، دعنا نذكر أنفسنا بسرعة بما يفعله خادم Nginx الافتراضي.
‫لنقم بتشغيل حاوية عامل الإرساء السريع -p 8080 ، ولن نحتاج إلى هذا لفترة طويلة جدًا ، لذا سنقوم بإجراء --rm حتى يتم
‫حذفه عند الإقلاع. نحن لا نهتم بالاسم. سنقوم فقط
‫بتشغيل Nginx. إذا انتقلنا إلى متصفحنا وقمنا بالكتابة في localhost ،
‫فسنرى صفحة فهرس Nginx الافتراضية.
‫نعم.
‫لنتذكر ذلك ، ثم دعنا ننهي هذه الحاوية وسنقوم الآن ببناء
‫نسختنا من Nginx مع ملف شفرة المصدر الإضافي.
‫نعم.
‫هذا يجب أن يذهب بسرعة حقا.
‫لاحظت أن الأمر استغرق بضع ثوانٍ فقط. هذا لأن لدينا Nginx بالفعل في ذاكرة التخزين المؤقت للصور. وكل ما كان يعمل عليه
‫هو نسخ ملف صغير جدًا وتغيير دليل العمل.
‫لنقم الآن بتشغيل الأمر الدقيق الذي قمنا بتشغيله للتو من أجل Nginx. هذه المرة فقط ، سنستخدم هذه الصورة
‫الجديدة التي أنشأناها للتو.
‫قم بالتبديل إلى متصفحنا ، وقم بالتحديث ، ورائع.
‫يتم تشغيل فهرس HTML المخصص الخاص بنا هناك وتعمل حاويتنا.
‫إذا قمنا بعمل صورة سريعة ls ، فيمكننا رؤية أحدث صورة لدينا هناك في الأعلى.
‫إذا أردنا بالفعل إرسال هذا الأمر إلى Docker Hub ، فإنه يعمل بنفس الطريقة التي فعلناها سابقًا.
‫نحتاج فقط إلى إعادة وضع علامة عليه. حتى نتمكن من عمل علامة صورة عامل ميناء.
‫إذا كنت تتذكر أمر المساعدة ، فيمكننا إلقاء نظرة على التنسيق وهو دائمًا التنسيق الذي
‫نقوم بوضع علامات عليه والعلامة التي نريد أن يتم استدعاؤها بعد ذلك. حتى علامة صورة عامل ميناء nginx مع أحدث html.
‫وبعد ذلك علي أن أسميها bretfisher ... مثل هذا.
‫ثم إذا قمت بعمل صورة docker ls مرة أخرى ، فسترى أن هذين السطرين العلويين هما نفس معرف الصورة مرة أخرى ويتم
‫تمييزهما بشكل مختلف.
‫يمكنني الآن القيام بدفع عامل إرساء باستخدام هذا المستودع والعلامة ، ويمكنني الحصول عليه في Docker Hub.