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

الدرس 13: التثبيتات المرتبطة (Bind Mounts) مقابل المجلدات (Volumes) (التطوير مقابل الإنتاج)

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

الدرس 13: التثبيتات المرتبطة (Bind Mounts) مقابل المجلدات (Volumes) (التطوير مقابل الإنتاج)

بينما تعتبر المجلدات مثالية للبيانات الدائمة (مثل قواعد البيانات)، توفر التثبيتات المرتبطة (Bind Mounts) تحكماً أكبر ويُفضل استخدامها عادةً لبيئات التطوير والاختبار.

شرح التثبيتات المرتبطة (Bind Mounts)

يقوم التثبيت المرتبط بتحميل ملف أو مسار دليل محدد للمضيف مباشرة داخل الحاوية. يجب أن يكون مسار المضيف موجوداً.

الاستخدام: مزامنة الكود في الوقت الفعلي (Hot Reloading).

مثال: إعادة التحميل الساخن للتطوير

افترض أن كود تطبيق Node.js الخاص بك موجود في /home/user/my-node-app على المضيف الخاص بك.

bash docker run -d \n --name node_dev \n -p 3000:3000 \n -v /home/user/my-node-app:/app \n node:20-alpine npm run dev

شرح -v للتثبيتات المرتبطة:

  • -v /home/user/my-node-app: المسار المطلق على المضيف.
  • :: فاصل.
  • /app: المسار داخل الحاوية (حيث يتم تعيين WORKDIR عادة).

الآن، إذا قمت بتحرير ملف على جهازك المضيف (على سبيل المثال، server.js)، ينعكس التغيير على الفور داخل الحاوية، مما يسرع عملية التطوير.

جدول المقارنة

FeatureDocker VolumesBind Mounts
الاستخدام الأساسيبيانات قاعدة البيانات الدائمة، التخزين المشتركالتطوير (مزامنة الكود)، التكوين
إدارة المضيفتتم إدارته بواسطة Docker (يصعب العثور على الموقع)تتم إدارته بواسطة المستخدم (يجب تحديد المسار المطلق)
الإنشاءيتم إنشاؤه بواسطة Docker أو CLIيتم إنشاؤه تلقائياً إذا كان المسار موجوداً
الأمانأكثر أماناً، يتجنب التغييرات العرضية لملفات المضيفيمكن أن يحل محل أو يعدل ملفات المضيف
قابلية النقلقابل للنقل بدرجة عاليةأقل قابلية للنقل (يتطلب مسار مضيف محدد)

قاعدة عامة:

  • الإنتاج: استخدم المجلدات (Volumes).
  • التطوير/التنقيح: استخدم التثبيتات المرتبطة (Bind Mounts).