Docker Compose - Networks & Volumes: অ্যাডভান্সড কনফিগারেশন 🌐💾
ডকার কম্পোজ ব্যবহার করে আপনি শুধু কন্টেইনারই নয়, বরং পুরো নেটওয়ার্ক এবং স্টোরেজ সিস্টেমকেও কোডের মাধ্যমে কন্ট্রোল করতে পারেন। এই গাইডে আমরা কম্পোজ ফাইলে নেটওয়ার্ক এবং ভলিউমের অ্যাডভান্সড ব্যবহারগুলো শিখবো।
১. নেটওয়ার্ক কনফিগারেশন (Network Configuration)
ডকার কম্পোজ ডিফল্টভাবে একটি bridge নেটওয়ার্ক তৈরি করে। তবে বড় অ্যাপ্লিকেশনে আইসোলেশনের জন্য কাস্টম নেটওয়ার্ক ব্যবহার করা জরুরি।
ক) কাস্টম নেটওয়ার্ক তৈরি:
networks:
frontend:
driver: bridge
backend:
driver: bridgeখ) সার্ভিসে নেটওয়ার্ক যুক্ত করা:
services:
web:
image: nginx
networks:
- frontend
api:
image: node-app
networks:
- frontend
- backend
db:
image: postgres
networks:
- backendএখানে web সার্ভার সরাসরি db কে দেখতে পাবে না, কারণ তারা একই নেটওয়ার্কে নেই।
২. নেটওয়ার্ক এলিয়াস (Network Aliases)
একটি সার্ভিসকে নেটওয়ার্কে অন্য কোনো বিশেষ নামে পরিচিত করার জন্য এলিয়াস ব্যবহার করা হয়:
services:
db:
image: mysql
networks:
app-net:
aliases:
- database_host৩. ভলিউম কনফিগারেশন (Volume Configuration)
ডকার কম্পোজ ফাইলে ভলিউম ডিফাইন করার জন্য ফাইলের শেষে একটি volumes: ব্লক থাকে।
ক) Named Volumes (নামযুক্ত ভলিউম):
এটি ডকার নিজে ম্যানেজ করে এবং ডাটাবেসের জন্য সবচেয়ে নিরাপদ।
services:
db:
image: postgres
volumes:
- db_data:/var/lib/postgresql/data
volumes:
db_data: # এখানে ভলিউমটি ডিফাইন করতে হয়খ) Bind Mounts (হোস্ট পাথ মাউন্ট):
ডেভেলপমেন্টের সময় হোস্ট মেশিনের ফাইল সরাসরি কন্টেইনারে ব্যবহারের জন্য:
services:
web:
image: nginx
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro # Read-only মাউন্ট৪. ভলিউম এবং নেটওয়ার্ক ড্রাইভার (Drivers)
আপনি চাইলে ডিফল্ট ড্রাইভার পরিবর্তন করে রিমোট স্টোরেজ বা ওভারলে নেটওয়ার্ক ব্যবহার করতে পারেন:
volumes:
shared_data:
driver: local # অথবা cloud drivers যেমন awslogsnetworks:
swarm_net:
driver: overlay # মাল্টি-হোস্ট কানেক্টিভিটির জন্য৫. সামারি টেবিল
| ফিচার | ডকার কম্পোজ কনফিগারেশন |
|---|---|
| Custom Network | networks: ব্লকে ডিফাইন করতে হয় |
| Network Aliases | সার্ভিসের ভেতর নেটওয়ার্কের নিচে থাকে |
| Named Volume | ফাইলের শেষে volumes: ব্লকে ডিফাইন করতে হয় |
| Bind Mount | সরাসরি পাথ ব্যবহার করা হয় (./host:/container) |
IMPORTANT
ডকার কম্পোজ কন্টেইনার ডিলিট করলেও Named Volumes ডিলিট করে না। পরবর্তী বার docker-compose up দিলে পুরনো ডেটা আবার ফিরে আসে। এটিই ডেটা পারসিস্টেন্সের ম্যাজিক।