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

الدرس 9: تعليمات Dockerfile الأساسية: FROM, RUN, CMD, ENTRYPOINT

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

الدرس 9: تعليمات Dockerfile الأساسية: FROM, RUN, CMD, ENTRYPOINT

إتقان هذه التعليمات الأساسية هو مفتاح بناء صور Docker فعالة.

1. FROM (الصورة الأساسية)

يجب أن تكون هذه هي التعليمة الأولى. إنها تحدد الصورة الأساسية التي ستبنى عليها صورتك.

dockerfile FROM node:20-slim

قاعدة: اختر دائماً أصغر وأكثر الصور الأساسية أماناً اللازمة لتطبيقك (مثل متغيرات alpine أو slim).

2. RUN (تنفيذ الأوامر)

تقوم RUN بتنفيذ أي أوامر في طبقة جديدة فوق الصورة الحالية، وتلتزم بالنتيجة.

الاستخدام: تثبيت الحزم، تنزيل الملفات، تجميع الكود.

dockerfile

مثال لتثبيت التبعيات

RUN apt-get update && apt-get install -y wget && rm -rf /var/lib/apt/lists/*

أفضل ممارسة: اربط أوامر متعددة في تعليمة RUN واحدة باستخدام && وقم بالتنظيف (مثل إزالة الذاكرة المخبأة) لتقليل عدد الطبقات وتقليل حجم الصورة.

3. CMD (الأمر الافتراضي)

توفر CMD إعدادات افتراضية لتنفيذ تطبيق داخل الحاوية.

  • يمكن أن تكون هناك تعليمة CMD واحدة فقط في Dockerfile.
  • إذا حدد المستخدم أمراً عند تشغيل الحاوية (docker run <image> <command>)، يتم تجاهل تعليمة CMD.

dockerfile

الصيغة التنفيذية (موصى بها)

CMD ["npm", "start"]

4. ENTRYPOINT (تحديد الملف القابل للتنفيذ)

تقوم ENTRYPOINT بتهيئة الحاوية للتشغيل كملف قابل للتنفيذ. يتم إلحاق الوسائط الممررة في تعليمة CMD (أو في سطر الأوامر) بـ ENTRYPOINT.

مثال:

dockerfile ENTRYPOINT ["/usr/bin/curl"] CMD ["--help"]

إذا قام المستخدم بتشغيل docker run my-image www.google.com:

  • الأمر المنفذ هو: /usr/bin/curl www.google.com (متجاوزاً CMD ["--help"] الافتراضية).

ملخص: استخدم ENTRYPOINT للملف التنفيذي الأساسي (مثل java, node, nginx) و CMD للمعلمات الافتراضية لذلك الملف التنفيذي.