تخطَّ إلى المحتوى

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 الكامل بالعربي.