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