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

WORKDIR

تعليمة WORKDIR — مجلّد العمل WORKDIR

WORKDIR تحدّد مجلّد العمل الحالي داخل الصورة لكل التعليمات التالية (RUN، COPY، CMD…)، وتُنشئ المجلّد تلقائيًا إن لم يكن موجودًا.

بدل استخدام cd داخل RUN (الذي لا يبقى أثره للتعليمات التالية لأن كل RUN يعمل في shell منفصل)، WORKDIR تضبط المسار الحالي فعليًا للصورة نفسها بشكل دائم حتى تُغيَّر مرة أخرى. تقدر تستخدمها أكثر من مرة، والمسارات النسبية تتراكم فوق بعضها: WORKDIR /a ثم WORKDIR b تكافئ WORKDIR /a/b.

تقبل WORKDIR متغيّرات ENV معرَّفة سابقًا في نفس الملف، ما يسمح ببناء المسار ديناميكيًا حسب متغيّر بيئة.

الصياغة

WORKDIR <path>

📄 مثال

FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
# كل COPY وRUN تالية تعمل من داخل /app تلقائيًا

أهم النقاط

الخيارالوظيفة
مسار مطلقالأوضح والأكثر أمانًا: WORKDIR /app بدل مسار نسبي غامض
إنشاء تلقائيلو المجلّد غير موجود تُنشئه Docker فورًا دون أمر mkdir منفصل
تراكم نسبيWORKDIR بمسار نسبي تُبنى فوق آخر WORKDIR سابقة لا فوق / مباشرة

💡 نصائح عملية

  • استخدم WORKDIR بدل RUN cd — الأخير لا يغيّر المجلّد الحالي للتعليمات التالية لأن كل RUN عملية منفصلة
  • اختر مسارًا واضحًا مثل /app بدل مسار عشوائي يصعب تذكّره عند docker exec لاحقًا

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

  • استخدام RUN cd /app && npm install ظنًا أنها تغيّر المجلّد للتعليمات القادمة — تأثيرها ينتهي مع نهاية سطر RUN نفسه
  • نسيان WORKDIR فتتوزّع الملفّات في / مباشرة وتتصادم أسماء الملفّات مع النظام

خصائص ذات صلة

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