0Pricing
DevOps Bootcamp · درس

الاستفادة من التخزين المؤقت للبناء

حسّنوا أوقات بناء Docker عبر فهم آلية ذاكرة التخزين المؤقت لبناء Docker واستخدامها بفعالية

الاستفادة من التخزين المؤقت للبناء درس مجاني في DevOps Bootcamp على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في DevOps Bootcamp، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة DevOps Bootcamp 4 دروس في المجموع.

أنشئ صورًا أسرع باستخدام التخزين المؤقت

قد يستغرق إنشاء صور Docker وقتًا، خاصةً للتطبيقات المعقدة. تُعد ذاكرة التخزين المؤقت لعملية الإنشاء في Docker ميزة ذكية تساعد على تسريع العملية بشكل كبير!

تعمل هذه الميزة من خلال إعادة استخدام الطبقات من عمليات إنشاء سابقة، لذلك لا يضطر Docker إلى إعادة إنشاء كل شيء من الصفر في كل مرة.

الاستفادة من التخزين المؤقت للبناء — رسم توضيحي 1

الإنشاء طبقة تلو الأخرى

عند إنشاء صورة Docker باستخدام Dockerfile، ينفذ Docker كل تعليمة سطرًا تلو الآخر.

  • تنشئ كل تعليمة، مثل FROM أو RUN أو COPY، "طبقة" جديدة في صورتك.
  • تتراص هذه الطبقات فوق بعضها لتكوين الصورة النهائية.

فحص ذاكرة Docker المؤقتة

قبل تنفيذ أي تعليمة، يتحقق Docker مما إذا كان قد أنشأ تلك الطبقة نفسها من قبل. ويقارن بين:

  • التعليمة نفسها، مثل RUN apt update.
  • "السياق" الخاص بتعليمات معينة، مثل الملفات التي يتم نسخها باستخدام COPY.

إذا عثر Docker على طبقة مطابقة، فإنه يعيد استخدامها من ذاكرة التخزين المؤقت بدلًا من تنفيذ التعليمة مرة أخرى.

إبطال ذاكرة التخزين المؤقت

تُعد ذاكرة التخزين المؤقت مفيدة، لكنها لا تُستخدم دائمًا. فإذا اكتشف Docker أي تغيير في تعليمة أو في سياقها، فإنه يُبطل ذاكرة التخزين المؤقت الخاصة بـ تلك الطبقة وجميع الطبقات اللاحقة.

هذا يعني أن Docker سيعيد الإنشاء بدءًا من تلك النقطة، متجاهلًا أي طبقات مخزنة مؤقتًا أسفلها.

ترتيب التعليمات بذكاء

لزيادة مرات الاستفادة من ذاكرة التخزين المؤقت إلى أقصى حد، رتّب تعليمات Dockerfile من الأقل احتمالًا للتغيير إلى الأكثر احتمالًا للتغيير.

  • التبعيات المستقرة أولًا: ثبّت حزم النظام أو تبعيات التطبيق التي نادرًا ما تتغير.
  • كود التطبيق أخيرًا: انسخ الكود المصدري لتطبيقك، الذي يتغير كثيرًا، في أقرب موضع ممكن إلى نهاية الملف.

الترتيب للاستفادة من التخزين المؤقت

لنلقِ نظرة على مثال. من خلال وضع الأمر RUN pip install، الذي يتغير عادةً بوتيرة أقل، قبل COPY . .، الذي يتغير مع كل تحديث للكود، يستطيع Docker إعادة استخدام طبقة التبعيات.

لنفترض أن requirements.txt يحتوي على flask وgunicorn، وأن app.py هو تطبيقك الرئيسي.

Dockerfile:

FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY app.py .
CMD ["python", "app.py"]

إذا تغير app.py فقط، فسيعيد Docker إنشاء طبقتي COPY وCMD الأخيرتين فقط، مما يوفر الوقت!

النسخ الانتقائي باستخدام .dockerignore

عند استخدام COPY . .، يفحص Docker كل ملف في سياق الإنشاء بحثًا عن التغييرات. حتى الملفات الصغيرة غير المهمة، مثل مجلدات .git أو بيانات الاختبار المحلية، يمكن أن تُبطل ذاكرة التخزين المؤقت.

استخدم ملف .dockerignore لاستبعاد الملفات والمجلدات غير الضرورية من سياق الإنشاء. ويمنع ذلك هذه الملفات من التسبب في إبطال ذاكرة التخزين المؤقت.

.dockerignore قيد الاستخدام

ضع ملفًا باسم .dockerignore في جذر سياق الإنشاء، بجوار Dockerfile.

مثال على .dockerignore:

.git
.venv
__pycache__
*.log
node_modules

الآن، عند استخدام COPY . .، سيتجاهل Docker هذه الملفات، مما يؤدي إلى الاستفادة من ذاكرة التخزين المؤقت بشكل أكثر موثوقية!

متى تتجاوز ذاكرة التخزين المؤقت

قد ترغب أحيانًا في التأكد من إنشاء كل شيء من جديد، مع تجاهل ذاكرة التخزين المؤقت بالكامل. وقد يكون ذلك مفيدًا لتصحيح الأخطاء أو لضمان استخدام أحدث إصدارات التبعيات على الإطلاق.

يمكنك إجبار Docker على إعادة الإنشاء دون استخدام ذاكرة التخزين المؤقت، وذلك بإضافة الخيار --no-cache إلى أمر الإنشاء:

docker build --no-cache -t my-app:latest .

التحقق من تحسين التخزين المؤقت

أنت تنشئ صورة Docker لتطبيق Node.js. يبدو Dockerfile لديك حاليًا كما يلي:

FROM node:16-alpine
WORKDIR /app
COPY . .
RUN npm install
CMD ["npm", "start"]

ما التغيير الذي سيحسن Dockerfile هذا على أفضل نحو للاستفادة من التخزين المؤقت لعملية الإنشاء؟

مراجعة: أتقن استخدام التخزين المؤقت

أحسنت! لقد تعلمت كيفية الاستفادة من ذاكرة Docker المؤقتة لعملية الإنشاء، من أجل إنشاء الصور بشكل أسرع.

  • ينشئ Docker الصور طبقة تلو الأخرى، ويعيد استخدام الطبقات المخزنة مؤقتًا متى أمكن.
  • تؤدي التغييرات في تعليمة أو في سياقها إلى إبطال ذاكرة التخزين المؤقت بدءًا من تلك النقطة.
  • حسّن العملية بترتيب التعليمات من الأقل احتمالًا للتغيير إلى الأكثر احتمالًا للتغيير.
  • استخدم .dockerignore لاستبعاد الملفات غير المهمة من سياق الإنشاء.
  • استخدم --no-cache لفرض إنشاء جديد عند الحاجة.

يؤدي التخزين المؤقت الفعّال إلى دورات تطوير أسرع وعمليات نشر أكثر مرونة!

الأسئلة الشائعة

هل درس «الاستفادة من التخزين المؤقت للبناء» مجاني؟

نعم — نص درس «الاستفادة من التخزين المؤقت للبناء» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة DevOps Bootcamp، انتقل إلى CoddyKit PRO. تتضمن دورة DevOps Bootcamp 4 دروس في المجموع.

ماذا ستتعلم في «الاستفادة من التخزين المؤقت للبناء»؟

حسّنوا أوقات بناء Docker عبر فهم آلية ذاكرة التخزين المؤقت لبناء Docker واستخدامها بفعالية تتمرن على DevOps Bootcamp مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ DevOps Bootcamp؟

لا تُشترط خبرة سابقة. DevOps Bootcamp على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «الاستفادة من التخزين المؤقت للبناء»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس DevOps Bootcamp هذا؟

نعم. كل درس في DevOps Bootcamp يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. البناء متعدد المراحل لتحقيق الكفاءة
  2. الاستفادة من التخزين المؤقت للبناء
  3. أفضل ممارسات أمان Dockerfile
  4. تقليل حجم الصور باستخدام قواعد Slim وDistroless
← العودة إلى DevOps Bootcamp