‫إذن ماذا سنفعل بهذا الملف؟
‫حسنًا ، لنخرج. سنرى في هذا الدليل أن لدينا هذا الملف فقط.
‫إنه بالكاد حجم k.
‫من الواضح أنه لا يحتوي على أي شيء آخر غير النص ، ولكنه إرشادات حول كيفية بناء
‫صورتنا.
‫الأمر from ، عندما أقوم ببناء هذه الصورة ، سوف يسحب بالفعل صورة Debian jessie هذه من Docker Hub إلى ذاكرة التخزين
‫المؤقت المحلية الخاصة بي. وبعد ذلك سيتم تنفيذ كل من هذه المقاطع
‫سطراً بسطر داخل محرك عامل الإرساء الخاص بي وتخزين كل طبقة من
‫هذه الطبقات.
‫لنكتب صورة عامل الإرساء وسنقوم بوضع علامة عليها.
‫تذكر ، هذا هو الاسم الذي سنقوم بإعطائه صورة.
‫نظرًا لأنني سأستخدم هذه الصورة محليًا فقط ، فلن أضطر إلى استخدام اسم حساب Docker Hub الخاص بي. يمكنني أن أسميها ما
‫أريد.
‫سأطلق عليه اسم nginx المخصص ، وسأضع نقطة هنا ، والتي تقول أساسًا ، قم ببناء ملف dockerfile
‫في هذا الدليل. وسترى أثناء ذلك ، أن كل خطوة
‫عبارة عن سطر في ملف الرصيف يتم تنفيذه داخل هذه الصورة أثناء إنشائها.
‫ثم هناك القليل من التجزئة في النهاية وهي في الواقع التجزئة التي تحتفظ بها في ذاكرة
‫التخزين المؤقت للبناء بحيث في المرة القادمة التي نبني فيها هذا الشيء ، إذا لم يتغير هذا
‫الخط في ملف الرصيف ، فلن يعيد تشغيله.
‫هذا هو أحد الأجزاء السحرية التي تجعل Docker يجعل النشر وبناء البرامج سريعًا للغاية ، فهو في الواقع
‫ذكي بدرجة كافية لتخزين الخطوات في الإنشاء مؤقتًا.
‫في كثير من الأحيان ، بعد أن تكون قد أنشأت صورة في المرة الأولى ، وكنت هناك بالفعل لتغيير شفرة
‫المصدر المخصصة وليس بالضرورة تغيير التطبيق في حد ذاته ، فقد حدثت كل
‫عناصر التثبيت هذه بالفعل.
‫لذلك سيكون لديك أوقات بناء قصيرة جدًا.
‫حسنًا ، لقد انتهينا الآن من البناء. استغرق ذلك حوالي دقيقة.
‫ولكن ، ماذا لو عدت إلى هذا الملف؟ سأقوم بإضافة منفذ إضافي مكشوف.
‫على سبيل المثال ، سأفعل 8080.
‫الآن ، هذا لا يعني أن nginx ذكي بما يكفي لمعرفة أنني أقوم بفتح هذا المنفذ ، أو
‫أنه بأي طريقة أتواصل مع nginx.
‫أنا فقط أسمح للحاوية بتلقي الحزم على هذا المنفذ.
‫فقط للتأكد ، لنقم بعمل صورة عامل ميناء ls. سنرى في الجزء العلوي أنه تم وضع علامة عليه تلقائيًا على أنه الأحدث
‫، أليس كذلك؟
‫لأننا أطلقنا عليه اسم المستودع فقط.
‫في الواقع لم نعطيه اسم علامة النقطتين عندما وضعنا علامة عليه.
‫لذلك دعونا نبنيها مرة أخرى.
‫واو ، كان ذلك سريعًا ، أليس كذلك؟
‫استغرق ذلك منا بضع ثوان فقط. وستلاحظ أنه في كل خطوة ستظهر استخدام ذاكرة التخزين المؤقت. بدءًا من الخطوة 2 ، سيقول استخدام ذاكرة التخزين
‫المؤقت ، واستخدام
‫ذاكرة التخزين المؤقت على 3 ، واستخدام ذاكرة التخزين المؤقت على 4. في 5 ، يتعرف في الخطوة 5 على أن هذا
‫الخط مختلف.
‫لذلك في الواقع ينفذ ذلك في الحاوية. وبعد ذلك ، في الخطوة 6 ، يجب إعادة تشغيل هذا السطر لأنه
‫في الدقيقة التي يتغير فيها السطر ، يجب إعادة بناء كل سطر بعد ذلك الآن أيضًا.
‫يُظهر هذا النقطة حول ترتيب سطورك في Dockerfile الخاص بك. لأنه ، إذا حصلت على الأشياء معطلة ، على
‫سبيل المثال ، إذا قمت
‫بنسخ الكود في ... لنفترض أنك تبني موقعًا على شبكة الإنترنت. إذا كنت تنسخ رمز البرنامج
‫الذي تقوم بإنشائه في بداية الملف ، فحينئذٍ في كل مرة تقوم فيها بتغيير ملف المصدر وإعادة
‫البناء ، سيتعين عليك إنشاء ملف Dockerfile بأكمله مرة أخرى.
‫لذلك من المهم للغاية للحفاظ على عقلك ووقتك أن تحتفظ بالأشياء في الجزء العلوي من Dockerfile الخاص بك
‫والتي تتغير على الأقل ثم الأشياء التي تتغير كثيرًا في الجزء السفلي من Dockerfile الخاص
‫بك.