Skip to content

Docker Compose - Services: সার্ভিসের বিস্তারিত কনফিগারেশন 🛠️

ডকার কম্পোজ ফাইলের সবচেয়ে গুরুত্বপূর্ণ অংশ হলো services ব্লক। এখানে আমরা প্রতিটি কন্টেইনারকে কিভাবে কনফিগার করা হবে, তা সুনির্দিষ্টভাবে লিখে থাকি। এই গাইডে আমরা সার্ভিসের বিভিন্ন কনফিগারেশন অপশনগুলো বিস্তারিত শিখবো।


১. সার্ভিস ডেফিনিশন (Service Definition)

প্রতিটি কন্টেইনারকে ডকার কম্পোজের ভাষায় একটি Service বলা হয়। একটি প্রজেক্টে অনেকগুলো সার্ভিস থাকতে পারে।

ক) Building from Dockerfile

যদি আপনার ইমেজটি কাস্টম হয় এবং সেটি বিল্ড করার প্রয়োজন পড়ে:

yaml
services:
  web:
    build: . # বর্তমান ডিরেক্টরি
    # অথবা ফোল্ডার স্পেসিফিক ভাবে:
    # build: ./frontend

খ) Using Existing Images

ডকার হাব থেকে কোনো প্রি-বিল্ট ইমেজ ব্যবহার করতে চাইলে:

yaml
services:
  database:
    image: mysql:8.0

২. পোর্ট এবং ভলিউম ম্যাপিং

  • Port Mapping: হোস্ট মেশিনের পোর্টের সাথে কন্টেইনার পোর্টের সংযোগ।

    yaml
    ports:
      - "8080:80" # হোস্ট:কন্টেইনার
  • Volume Mounting: ডেটা ড্রাইভ বা হোস্টের ফোল্ডার মাউন্ট করা।

    yaml
    volumes:
      - ./data:/app/data
      - db-storage:/var/lib/mysql

৩. এনভায়রনমেন্ট ভ্যারিয়েবল (Environment Variables)

অ্যাপের পাসওয়ার্ড বা সিক্রেট কন্টেইনারের ভেতরে পাস করার দুটি পদ্ধতি আছে:

১. সরাসরি উল্লেখ করা:

yaml
environment:
  - DEBUG=true
  - DB_PASSWORD=secret

২. ফাইল থেকে লোড করা (Best Practice):

yaml
env_file:
  - .env

৪. কমান্ড ওভাররাইড (Command Override)

ডকার ইমেজে ডিফল্টভাবে যে কমান্ড দেওয়া থাকে (CMD), আপনি চাইলে কম্পোজ ফাইল থেকে তা পরিবর্তন করতে পারেন:

yaml
services:
  app:
    image: my-node-app
    command: npm run dev # ডিফল্ট কমান্ডের ওপর এটি কাজ করবে

৫. রিস্টার্ট পলিসি (Restart Policies)

কন্টেইনার কোনো কারণে ক্র্যাশ করলে বা বন্ধ হয়ে গেলে এটি কি অটো-স্টার্ট হবে কি না, তা এখান থেকে ঠিক করা যায়:

  • no: অটোমেটিক রিস্টার্ট হবে না (ডিফল্ট)।
  • always: সবসময় রিস্টার্ট হবে।
  • on-failure: যদি এরর হয়ে বন্ধ হয়, তবেই রিস্টার্ট হবে।
  • unless-stopped: ইউজার নিজে ম্যানুয়ালি স্টপ না করা পর্যন্ত অটো-রিস্টার্ট হবে।
yaml
services:
  db:
    image: postgres
    restart: always

৬. সার্ভিস কনফিগারেশন সামারি

কী-ওয়ার্ডকাজ
buildলোকাল ডকারফাইল থেকে ইমেজ তৈরি করে
imageনির্দিষ্ট ইমেজ ব্যবহার করে
portsপোর্ট ম্যাপিং হ্যান্ডেল করে
volumesডেটা পারসিস্টেন্স নিশ্চিত করে
environmentকন্টেইনারে ভ্যারিয়েবল সেট করে
restartকন্টেইনারের রিস্টার্ট বিহেভিয়ার ঠিক করে

TIP

যখন আপনি build এবং image দুটোই একসাথে ব্যবহার করবেন, তখন ডকার কম্পোজ বিল্ড করা ইমেজের নাম হিসেবে image ট্যাগটি ব্যবহার করবে।

Released under the MIT License.