Skip to content

Docker Compose - Networks & Volumes: অ্যাডভান্সড কনফিগারেশন 🌐💾

ডকার কম্পোজ ব্যবহার করে আপনি শুধু কন্টেইনারই নয়, বরং পুরো নেটওয়ার্ক এবং স্টোরেজ সিস্টেমকেও কোডের মাধ্যমে কন্ট্রোল করতে পারেন। এই গাইডে আমরা কম্পোজ ফাইলে নেটওয়ার্ক এবং ভলিউমের অ্যাডভান্সড ব্যবহারগুলো শিখবো।


১. নেটওয়ার্ক কনফিগারেশন (Network Configuration)

ডকার কম্পোজ ডিফল্টভাবে একটি bridge নেটওয়ার্ক তৈরি করে। তবে বড় অ্যাপ্লিকেশনে আইসোলেশনের জন্য কাস্টম নেটওয়ার্ক ব্যবহার করা জরুরি।

ক) কাস্টম নেটওয়ার্ক তৈরি:

yaml
networks:
  frontend:
    driver: bridge
  backend:
    driver: bridge

খ) সার্ভিসে নেটওয়ার্ক যুক্ত করা:

yaml
services:
  web:
    image: nginx
    networks:
      - frontend
  api:
    image: node-app
    networks:
      - frontend
      - backend
  db:
    image: postgres
    networks:
      - backend

এখানে web সার্ভার সরাসরি db কে দেখতে পাবে না, কারণ তারা একই নেটওয়ার্কে নেই।


২. নেটওয়ার্ক এলিয়াস (Network Aliases)

একটি সার্ভিসকে নেটওয়ার্কে অন্য কোনো বিশেষ নামে পরিচিত করার জন্য এলিয়াস ব্যবহার করা হয়:

yaml
services:
  db:
    image: mysql
    networks:
      app-net:
        aliases:
          - database_host

৩. ভলিউম কনফিগারেশন (Volume Configuration)

ডকার কম্পোজ ফাইলে ভলিউম ডিফাইন করার জন্য ফাইলের শেষে একটি volumes: ব্লক থাকে।

ক) Named Volumes (নামযুক্ত ভলিউম):

এটি ডকার নিজে ম্যানেজ করে এবং ডাটাবেসের জন্য সবচেয়ে নিরাপদ।

yaml
services:
  db:
    image: postgres
    volumes:
      - db_data:/var/lib/postgresql/data

volumes:
  db_data: # এখানে ভলিউমটি ডিফাইন করতে হয়

খ) Bind Mounts (হোস্ট পাথ মাউন্ট):

ডেভেলপমেন্টের সময় হোস্ট মেশিনের ফাইল সরাসরি কন্টেইনারে ব্যবহারের জন্য:

yaml
services:
  web:
    image: nginx
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf:ro # Read-only মাউন্ট

৪. ভলিউম এবং নেটওয়ার্ক ড্রাইভার (Drivers)

আপনি চাইলে ডিফল্ট ড্রাইভার পরিবর্তন করে রিমোট স্টোরেজ বা ওভারলে নেটওয়ার্ক ব্যবহার করতে পারেন:

yaml
volumes:
  shared_data:
    driver: local # অথবা cloud drivers যেমন awslogs
yaml
networks:
  swarm_net:
    driver: overlay # মাল্টি-হোস্ট কানেক্টিভিটির জন্য

৫. সামারি টেবিল

ফিচারডকার কম্পোজ কনফিগারেশন
Custom Networknetworks: ব্লকে ডিফাইন করতে হয়
Network Aliasesসার্ভিসের ভেতর নেটওয়ার্কের নিচে থাকে
Named Volumeফাইলের শেষে volumes: ব্লকে ডিফাইন করতে হয়
Bind Mountসরাসরি পাথ ব্যবহার করা হয় (./host:/container)

IMPORTANT

ডকার কম্পোজ কন্টেইনার ডিলিট করলেও Named Volumes ডিলিট করে না। পরবর্তী বার docker-compose up দিলে পুরনো ডেটা আবার ফিরে আসে। এটিই ডেটা পারসিস্টেন্সের ম্যাজিক।

Released under the MIT License.