FROM
تعليمة FROM — الصورة الأساس FROM
FROM أول تعليمة فعلية في أي Dockerfile — تحدّد الصورة الأساس التي تُبنى فوقها صورتك، وتفتح مرحلة بناء جديدة.
كل Dockerfile يبدأ عادة بـ FROM، وتقدر تكرّرها أكثر من مرة لبناء متعدّد المراحل (multi-stage build): كل FROM جديدة تفتح مرحلة منفصلة تنسى حالة المرحلة السابقة تمامًا، إلا ما تنسخه صراحة بـ COPY --from. سمِّ أي مرحلة بـ AS لتشير إليها لاحقًا باسمها بدل رقمها.
تعليمات ARG المعرَّفة قبل أول FROM في الملف نطاقها محدود: تقدر تستخدمها داخل FROM نفسها (لاختيار وسم الصورة الأساس ديناميكيًا مثلًا)، لكنها تختفي بعد FROM ما لم تُعِد تعريفها ARG داخل المرحلة.
الصياغة
FROM <image>[:<tag>] [AS <stage-name>] FROM <image>@<digest>
📄 مثال
# مرحلة بناء منفصلة عن مرحلة التشغيل FROM node:20-alpine AS build WORKDIR /app COPY . . RUN npm ci && npm run build FROM node:20-alpine WORKDIR /app COPY --from=build /app/dist ./dist CMD ["node", "dist/server.js"]
أهم النقاط
| الخيار | الوظيفة |
|---|---|
| AS <name> | يسمّي المرحلة ليُشار إليها لاحقًا في COPY --from أو FROM أخرى |
| --platform | يحدّد منصّة الصورة الأساس صراحة، مثل linux/amd64 |
| @<digest> | يثبّت الصورة على بصمة SHA محدّدة بدل وسم قابل للتغيّر |
💡 نصائح عملية
- استخدم وسمًا دقيقًا (node:20.11-alpine) بدل latest لتفادي تغييرات مفاجئة بين عمليات بناء مختلفة
- في البناء متعدّد المراحل، اجعل المرحلة الأخيرة هي الأصغر — هي التي تصبح الصورة النهائية
⚠️ أخطاء شائعة
- افتراض أن ARG المعرَّفة قبل FROM تبقى متاحة داخل المرحلة تلقائيًا — يجب إعادة تعريفها بـ ARG داخل المرحلة نفسها لاستخدامها
- استخدام latest في الإنتاج فيتغيّر محتوى الصورة الأساس دون أن تلاحظ
خصائص ذات صلة
🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار DOCKER الكامل بالعربي.