الدرس 25: Docker Ignore وتعمق في سياق البناء (Build Context)
عندما تنفذ docker build .، يقوم عميل Docker بتغليف المحتويات الكاملة للدليل الحالي (سياق البناء) وإرسالها إلى خفي Docker. يحدث هذا النقل حتى إذا كان الخفي يعمل محلياً، وقد يكون بطيئاً إذا كان السياق كبيراً.
التحكم في سياق البناء باستخدام .dockerignore
يعمل ملف .dockerignore بشكل مشابه لملف .gitignore. يسرد الملفات والأدلة التي يجب استبعادها من سياق البناء المرسل إلى الخفي.
فوائد .dockerignore الجيد:
- السرعة: نقل أسرع للسياق، خاصة عبر اتصال عن بُعد.
- الكفاءة: يمنع الملفات الكبيرة وغير الضرورية (مثل غيغابايت من السجلات أو الذاكرة المخبأة المؤقتة) من شغل مساحة في طبقات الصورة.
- الأمان: يمنع النسخ العرضي للملفات الحساسة (مثل مفاتيح API أو الإعدادات المحلية) إلى الصورة.
أمثلة أساسية لـ .dockerignore
التبعيات والمخرجات المجمعة
**/node_modules pycache/ target/
التحكم في المصدر والبيانات الوصفية
.git .vscode
السجلات والملفات المؤقتة
*.log tmp/
استكشاف مشكلات سياق البناء وإصلاحها
إذا تلقيت خطأ يفيد بأن ملفاً محدداً في COPY لا يمكن العثور عليه، تحقق من مكانين:
- Dockerfile: هل المسار صحيح بالنسبة لـ Dockerfile؟
.dockerignore: هل يتم تجاهل الملف عن طريق الخطأ؟ إذا كان الأمر كذلك، فلن يكون جزءاً من السياق المرسل إلى الخفي، ولن يتمكن Docker من نسخه.