العودة إلى الدورة

الدرس 10: نسخ الكود وتحديد دليل العمل

Docker من الصفر إلى الاحتراف: الدورة الشاملة لتغليف التطبيقات (Containerization) للمبتدئين

الدرس 10: نسخ الكود وتحديد دليل العمل

لبناء صورة لتطبيق حقيقي، نحتاج إلى نسخ الكود الخاص بنا إلى نظام ملفات الصورة وتحديد المكان الذي يجب أن يعمل فيه تطبيقنا.

1. WORKDIR (دليل العمل)

تقوم تعليمة WORKDIR بتعيين دليل العمل الحالي للتعليمات اللاحقة (RUN, CMD, ENTRYPOINT, COPY). إذا لم يكن الدليل موجوداً، سيقوم Docker بإنشائه.

dockerfile

ممارسة جيدة: إنشاء دليل مخصص للتطبيق

WORKDIR /app

أوامر RUN اللاحقة سيتم تنفيذها الآن داخل /app

RUN pwd

المخرج: /app

2. COPY (نسخ الملفات)

تقوم تعليمة COPY بنسخ الملفات أو الأدلة من سياق البناء (جهازك المحلي) إلى نظام ملفات الصورة.

الصيغة: COPY <source> <destination>

مثال: تغليف تطبيق Node.js في حاوية

افترض أن لديك package.json وملف خادم (server.js).

dockerfile FROM node:20-alpine

1. تعيين دليل العمل

WORKDIR /usr/src/app

2. نسخ ملفات التبعية أولاً (لتحسين التخزين المؤقت للطبقات!)

نقوم بنسخ package*.json بشكل منفصل حتى إذا تغير الكود فقط،

تظل خطوة 'npm install' المكلفة مخزنة مؤقتاً.

COPY package*.json ./

3. تثبيت التبعيات

RUN npm install

4. نسخ بقية كود التطبيق

COPY . .

5. تعريف نقطة دخول التطبيق

CMD ["node", "server.js"]

الفرق بين COPY و ADD:

  • يُفضل استخدام COPY بشكل عام لأنه أبسط وأكثر وضوحاً.
  • لدى ADD وظائف إضافية: يمكنها التعامل مع عناوين URL عن بُعد واستخراج الأرشيفات المضغوطة تلقائياً (tar, gzip). استخدم COPY ما لم تكن بحاجة صراحةً إلى ميزة استخراج الأرشيف.