البناء متعدد المراحل والصور الأصغر
تعلّموا كيف تتيح Dockerfiles متعددة المراحل شحن صور إنتاجية صغيرة بفصل أدوات البناء عن بيئة التشغيل النهائية، مما يقلل حجم الصورة كثيرًا
البناء متعدد المراحل والصور الأصغر درس مجاني في Docker & DevOps Fundamentals على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Docker & DevOps Fundamentals، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Docker & DevOps Fundamentals 4 دروس في المجموع.
أهمية حجم الصورة
تكون الصور الكبيرة أبطأ في البناء والدفع والسحب، كما أنها توفر مساحة أكبر للهجوم. ويتمثل هدف هندسي جيد في شحن أصغر صورة لا تزال تشغّل تطبيقك.
مشكلة التضخم
غالبًا ما يتطلب بناء التطبيق compilers واعتماديات التطوير وأدوات البناء. إذا انتهى الأمر بهذه العناصر داخل الصورة النهائية، فسيزداد حجمها كثيرًا — رغم أن التطبيق قيد التشغيل لا يحتاج إلى أي منها.
ما هو البناء متعدد المراحل؟
يستخدم multi-stage build عدة عبارات FROM في Dockerfile واحد. تبني المراحل المبكرة التطبيق؛ ثم تنسخ المرحلة النهائية العناصر الناتجة المكتملة فقط، وتترك أدوات البناء خارجها.
تسمية مرحلة
امنح المرحلة اسمًا باستخدام AS حتى تتمكن المراحل اللاحقة من الرجوع إليها.
FROM node:20 AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ciالبناء في المرحلة الأولى
تعمل مرحلة البناء على compile التطبيق أو إنشاء حزمته. تتوفر هنا كل اعتماديات التطوير وأدواته.
COPY . .
RUN npm run buildمرحلة نهائية خفيفة
ابدأ المرحلة النهائية من صورة أساسية صغيرة، ثم انسخ فقط ما يحتاج إليه التطبيق للتشغيل باستخدام COPY --from.
FROM node:20-slim
WORKDIR /app
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modulesDockerfile متعدد المراحل كامل
ينتج عن دمج المراحل صورة نهائية صغيرة تحتوي على التطبيق المبني، دون أي من toolchain الخاص بالبناء.
FROM node:20 AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM node:20-slim
WORKDIR /app
COPY --from=builder /app/dist ./dist
CMD ['node', 'dist/main.js']اختيار صورة أساسية صغيرة
غالبًا ما تكون الصورة الأساسية العامل الأكبر. تعمل نسخ Slim وAlpine على تقليص حجم الصور بدرجة ملحوظة:
node:20~ كبيرةnode:20-slim~ أصغر بكثيرnode:20-alpine~ الأصغر، مع مكتبات محدودة
اعتماديات الإنتاج فقط
تجاوز اعتماديات التطوير في صورة التشغيل. يؤدي التثبيت باستخدام production flag إلى إبقاء حزم الاختبار والبناء خارج الصورة.
RUN npm ci --omit=devاستخدام .dockerignore
يُبقي ملف .dockerignore الملفات غير الضرورية خارج سياق البناء، ما يسرّع عمليات البناء ويمنع النسخ غير المقصود للأسرار أو المجلدات الضخمة.
node_modules
.git
.env
Dockerfile
*.logقياس النتيجة
تحقق من عملك بفحص أحجام الصور. يمكن أن تكون الصورة متعددة المراحل المبنية جيدًا أصغر بكثير من صورة ساذجة أحادية المرحلة.
docker images myappتحقق سريع
اختبر معرفتك بالبناء متعدد المراحل.
مراجعة
لقد تعلمت كيفية شحن صور Docker خفيفة:
- تستخدم عمليات البناء متعددة المراحل مراحل
FROMمتعددة في Dockerfile واحد - ابنِ التطبيق في مرحلة مبكرة، ثم استخدم
COPY --fromلنسخ العناصر الناتجة فقط إلى مرحلة نهائية خفيفة - اختر صورًا أساسية صغيرة (slim أو alpine) وثبّت اعتماديات الإنتاج فقط
- استخدم
.dockerignoreلتقليص سياق البناء
تُبنى الصور الأصغر بسرعة أكبر، وتُنشر بوتيرة أسرع، وتكون أكثر أمانًا.
الأسئلة الشائعة
هل درس «البناء متعدد المراحل والصور الأصغر» مجاني؟
نعم — نص درس «البناء متعدد المراحل والصور الأصغر» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Docker & DevOps Fundamentals، انتقل إلى CoddyKit PRO. تتضمن دورة Docker & DevOps Fundamentals 4 دروس في المجموع.
ماذا ستتعلم في «البناء متعدد المراحل والصور الأصغر»؟
تعلّموا كيف تتيح Dockerfiles متعددة المراحل شحن صور إنتاجية صغيرة بفصل أدوات البناء عن بيئة التشغيل النهائية، مما يقلل حجم الصورة كثيرًا تتمرن على Docker & DevOps Fundamentals مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Docker & DevOps Fundamentals؟
لا تُشترط خبرة سابقة. Docker & DevOps Fundamentals على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «البناء متعدد المراحل والصور الأصغر»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Docker & DevOps Fundamentals هذا؟
نعم. كل درس في Docker & DevOps Fundamentals يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- فهم Dockerfiles
- إنشاء صور Docker مخصّصة
- طبقات الصور وتحسينها
- البناء متعدد المراحل والصور الأصغر