الدرس 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)، ينعكس التغيير على الفور داخل الحاوية، مما يسرع عملية التطوير.
جدول المقارنة
| Feature | Docker Volumes | Bind Mounts |
|---|---|---|
| الاستخدام الأساسي | بيانات قاعدة البيانات الدائمة، التخزين المشترك | التطوير (مزامنة الكود)، التكوين |
| إدارة المضيف | تتم إدارته بواسطة Docker (يصعب العثور على الموقع) | تتم إدارته بواسطة المستخدم (يجب تحديد المسار المطلق) |
| الإنشاء | يتم إنشاؤه بواسطة Docker أو CLI | يتم إنشاؤه تلقائياً إذا كان المسار موجوداً |
| الأمان | أكثر أماناً، يتجنب التغييرات العرضية لملفات المضيف | يمكن أن يحل محل أو يعدل ملفات المضيف |
| قابلية النقل | قابل للنقل بدرجة عالية | أقل قابلية للنقل (يتطلب مسار مضيف محدد) |
قاعدة عامة:
- الإنتاج: استخدم المجلدات (Volumes).
- التطوير/التنقيح: استخدم التثبيتات المرتبطة (Bind Mounts).