Multi-stage Builds
بعض لغات البرمجة (مثل Go أو Rust أو C++) يجب تصريفها قبل تشغيلها — المصرّف (compiler) أداة تترجم الشيفرة المصدرية التي كتبها المبرمج إلى برنامج واحد يمكن للآلة تشغيله مباشرة (ملف ثنائي). في الـ multi-stage build تستخدم مرحلة builder تحوي الـ toolchain الكامل للتصريف، ثم مرحلة runtime صغيرة تنسخ باست
أنت تطبخ في مطبخ كبير وفوضوي فيه الكثير من القدور والمكونات الخام — ثم ترسل إلى الزبون الطبق المنجَز فقط، دون القدور ودون البقايا.
- المصرّف
- أداة تترجم الشيفرة المصدرية التي كتبها المبرمج إلى برنامج يمكن للآلة تشغيله مباشرة (ملف ثنائي). اللغات المصرَّفة مثل Go وRust وC++ تحتاج إليه لبناء البرنامج — لكن ليس لتشغيله.
- build stage
- المرحلة الأولى في الـ multi-stage build، وهي مبنية على صورة تحوي toolchain كاملًا (مصرّف، مكتبات)، حيث يُصرَّف التطبيق إلى ناتج نهائي.
- runtime stage
- المرحلة الأخيرة، وهي مبنية على صورة صغيرة (على سبيل المثال alpine)، تحوي الناتج المنجَز فقط وما يلزم لتشغيله — دون أدوات البناء.
- COPY --from
- تعليمة تنسخ الملفات من مرحلة سابقة (بالاسم أو بالرقم) إلى المرحلة الحالية، وتتيح اختيار الناتج النهائي فقط وترك بقية البناء خلفك.