الدرس 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 للمعلمات الافتراضية لذلك الملف التنفيذي.