ما هو Dockerfile؟
ملف نصّي يحتوي تعليمات بناء صورة لتطبيقك خطوة بخطوة.
مثال لتطبيق Node.js
# 1. الصورة الأساس
FROM node:20
# 2. مجلد العمل داخل الحاوية
WORKDIR /app
# 3. نسخ ملفات الاعتماديات وتثبيتها
COPY package*.json ./
RUN npm install
# 4. نسخ باقي المشروع
COPY . .
# 5. المنفذ الذي يستمع عليه التطبيق
EXPOSE 3000
# 6. أمر التشغيل
CMD ["node", "app.js"]
شرح التعليمات
| التعليمة | الوظيفة |
|---|---|
FROM | الصورة الأساس التي نبني فوقها |
WORKDIR | مجلد العمل داخل الحاوية |
COPY / ADD | نسخ ملفات من جهازك إلى الصورة (ADD تدعم أيضًا فك الأرشيفات وروابط URL، لكن COPY أوضح ومفضّلة في أغلب الحالات) |
RUN | تنفيذ أمر أثناء البناء (مثل npm install) |
ENV | متغيّر بيئة بقيمة افتراضية داخل الصورة (التفاصيل الكاملة في درس متغيّرات البيئة) |
EXPOSE | توثيق المنفذ المستخدَم |
CMD | الأمر الافتراضي الذي يُنفّذ عند تشغيل الحاوية |
ENTRYPOINT | الأمر الثابت للحاوية؛ يُستخدم غالبًا مع CMD كوسائط له |
CMD مقابل RUN
RUNيُنفَّذ أثناء البناء (تثبيت حِزَم، مثلnpm install) وتُحفَظ نتيجته في طبقة الصورة.CMDيُنفَّذ عند تشغيل الحاوية — هو أمر الإقلاع الافتراضي، ويمكن استبداله بتمرير أمر آخر لـdocker run.
بناء الصورة وتشغيلها
docker build -t my-app .
docker run -p 3000:3000 my-app
-t my-app يعطي الصورة اسمًا، والنقطة . تعني المجلد الحالي.
نصيحة: .dockerignore
كملف .gitignore، يمنع نسخ ملفات غير ضرورية:
node_modules
.git
.env
🎯 التالي: Docker Compose لإدارة عدة حاويات.