Bind Mounts: লোকাল ফাইল সিস্টেমের সাথে কানেক্টিভিটি 📂
ডেভেলপমেন্টের সময় ডকারের সবচেয়ে শক্তিশালী ফিচারগুলোর মধ্যে একটি হলো Bind Mount। এটি আপনাকে আপনার লোকাল কম্পিউটারের কোনো ফোল্ডার সরাসরি কন্টেইনারের ভেতরে মাউন্ট করার সুযোগ দেয়।
১. Bind Mount কেন দরকার?
সাধারণত ইমেজ বিল্ড করার পর কোনো কোড চেঞ্জ করলে আবার বিল্ড করতে হয়। কিন্তু Bind Mount ব্যবহার করলে:
- Real-time Code Changes: আপনি আপনার এডিটরে কোড সেভ করবেন এবং কন্টেইনারের ভেতরে সেটি সাথে সাথে আপডেট হয়ে যাবে।
- Easier Debugging: কন্টেইনারের ভেতরে বারবার ঢোকার প্রয়োজন হয় না।
- Development Workflow: আপনার লোকাল টুলস (IDE, Git) ব্যবহার করেই কন্টেইনারে কোড চালাতে পারেন।
২. সিনট্যাক্স এবং ব্যবহার
Bind Mount-এর জন্য -v ফ্ল্যাগ ব্যবহার করা হয়। এখানে হোস্টের পাথটি অবশ্যই Absolute Path হতে হবে।
লোকাল ফোল্ডার মাউন্ট করা:
docker run -d --name myapp -v "C:\projects\myapp:/app" node:16অটোমেটিক বর্তমান ডিরেক্টরি মাউন্ট করতে (Linux/macOS/Powershell):
docker run -v ${PWD}:/app node:16৩. Absolute vs Relative Path
- Absolute Path (সঠিক): ডকার মাউন্ট করার সময় সবসময় পূর্ণ ঠিকানা চায়। যেমন:
/home/user/projectবাC:\MyFiles\app. - Relative Path (ভুল): আপনি
-v ./app:/appএভাবে সরাসরি ব্যবহার করতে পারেন না (কিছু নতুন ডকার ভার্সন বা Compose ছাড়া)। সবসময়${PWD}বা$(pwd)ব্যবহার করা নিরাপদ।
৪. Read-Only Mounts (:ro)
কখনো কখনো আপনি চান কন্টেইনার শুধুমাত্র ফাইলগুলো পড়ুক, কিন্তু কোনো কিছু পরিবর্তন না করুক। তখন :ro ফ্ল্যাগ ব্যবহার করা হয়:
docker run -v ${PWD}/config:/etc/config:ro nginxএটি সিকিউরিটির জন্য অনেক ভালো, যাতে কন্টেইনার আপনার হোস্টের সেনসিটিভ ফাইল ডিলিট বা চেঞ্জ না করতে পারে।
৫. পারফরম্যান্স এবং লিমিটেশন
- Performance: Linux-এ Bind Mount খুব দ্রুত কাজ করে। কিন্তু Windows বা macOS-এ ফাইল সিস্টেম শেয়ার করার কারণে বড় প্রোজেক্টে (যেমন:
node_modules) এটি একটু স্লো হতে পারে। - File Permissions: Linux-এ হোস্ট এবং কন্টেইনারের ইউজারের UID/GID এক না হলে পারমিশন এরর আসতে পারে।
- Windows Path Issues: উইন্ডোজে পাথ দেওয়ার সময় ব্যাকস্ল্যাশ (
\) এবং ফরওয়ার্ড স্ল্যাশ (/) নিয়ে সাবধান থাকতে হয়।${PWD}ব্যবহার করলে ডকার পাথগুলো অটোমেটিক হ্যান্ডেল করে।
সামারি টেবিল
| ফিচার | বিস্তারিত |
|---|---|
| সোর্স | হোস্ট মেশিনের যেকোনো ডিরেক্টরি |
| পারফরম্যান্স | Linux-এ ফাস্ট, অন্যগুলোতে ডিস্ক I/O সীমাবদ্ধতা থাকতে পারে |
| সিকিউরিটি | Read-Only সম্ভব (:ro) |
| ব্যবহার | ডেভেলপমেন্ট এবং কোড অটো-লোড |
CAUTION
প্রোডাকশন সার্ভারে বিশাল ভলিউমের ডেটার জন্য Bind Mount-এর চেয়ে Named Volume বেশি নিরাপদ এবং ম্যানেজ করা সহজ।