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

ARG

تعليمة ARG — متغيّرات وقت البناء ARG

ARG تعرّف متغيّرًا متاحًا فقط أثناء عملية البناء نفسها — لا يبقى له أثر في الصورة النهائية ولا في الحاوية وقت التشغيل.

بعكس ENV، قيمة ARG لا تُضمَّن في الصورة النهائية ولا تظهر في الحاويات المُشغَّلة منها — لذلك مناسبة لضبط سلوك البناء (رقم إصدار، اختيار صورة أساس) لا لتخزين أسرار دائمة (لهذا استخدم RUN --mount=type=secret بدلًا منها). تقدر تمنحها قيمة افتراضية وقت التعريف، ويمرَّر عليها قيمة مختلفة وقت البناء بـ --build-arg.

ARG المعرَّفة قبل أول FROM نطاقها محدود لتلك السطر فقط (عادة لاختيار وسم صورة FROM نفسها)؛ لاستخدام ARG داخل مرحلة بناء لاحقة يجب إعادة تعريفها بـ ARG مرة أخرى بعد FROM. متغيّرات وكيل الشبكة مثل HTTP_PROXY متاحة تلقائيًا كـ ARG ضمنية دون تعريف صريح.

الصياغة

ARG <name>[=<default>]

📄 مثال

ARG NODE_VERSION=20
FROM node:${NODE_VERSION}-alpine

# إعادة تعريف ARG داخل المرحلة لاستخدامها بعد FROM
ARG BUILD_ENV=production
ENV NODE_ENV=${BUILD_ENV}

أهم النقاط

الخيارالوظيفة
ARG name=defaultقيمة افتراضية تُستخدم إن لم يُمرَّر --build-arg وقت البناء
--build-arg name=valueيمرّر قيمة مختلفة عند تنفيذ docker build
قبل FROMنطاق محدود: يُستخدم فقط داخل تعليمة FROM نفسها ثم يختفي

💡 نصائح عملية

  • استخدم ARG لضبط رقم إصدار الصورة الأساس ديناميكيًا بدل تكرار الرقم يدويًا في كل مكان
  • لا تستخدم ARG لأي كلمة مرور أو مفتاح API — لا تُضمَّن في الصورة، لكنها تبقى ظاهرة في تاريخ البناء والكاش المشترك

⚠️ أخطاء شائعة

  • افتراض أن ARG معرَّفة قبل FROM تبقى متاحة تلقائيًا بعدها دون إعادة تعريف — تختفي فورًا بعد FROM
  • استخدام ARG لتمرير أسرار حقيقية بدل RUN --mount=type=secret الآمن لهذا الغرض تحديدًا

خصائص ذات صلة

🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار DOCKER الكامل بالعربي.