Skip to content

Docker Compose - Advanced: প্রফেশনাল কনফিগারেশন 🚀

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


১. হেলথচেক (Healthcheck)

কখনো কখনো একটি কন্টেইনার "Running" দেখালেও ভেতরে সার্ভিসটি আসলে রেডি থাকে না (যেমন- ডাটাবেস চালু হতে সময় নেয়)। হেলথচেক দিয়ে এটি চেক করা যায়:

yaml
services:
  db:
    image: postgres
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres"]
      interval: 10s
      timeout: 5s
      retries: 5

২. রিসোর্স লিমিট (Resource Limits)

একটি কন্টেইনার যেন আপনার পুরো সার্ভারের সব RAM বা CPU দখল করে না নেয়, সেজন্য লিমিট সেট করা জরুরি:

yaml
services:
  web:
    image: nginx
    deploy:
      resources:
        limits:
          cpus: "0.50" # সর্বোচ্চ ৫০% CPU
          memory: 512M # সর্বোচ্চ ৫১২ মেগাবাইট RAM
        reservations:
          memory: 128M # মিনিমাম ১২৮ মেগাবাইট রিজার্ভ থাকবে

৩. বিল্ড আর্গুমেন্ট (Build Arguments)

ইমেজ বিল্ড করার সময় যদি কোনো ভ্যারিয়েবল পাস করার দরকার হয় (যেমন- সফটওয়্যার ভার্সন):

yaml
services:
  api:
    build:
      context: .
      args:
        - APP_VERSION=1.0.0

৪. এক্সটেন্ডস এবং ইনহেরিটেন্স (Extends)

একই কনফিগারেশন বারবার না লিখে একটি কমন অংশকে অন্য সার্ভিসে ব্যবহার করা যায়:

yaml
services:
  base:
    image: my-app
    environment:
      - NODE_ENV=production

  web:
    extends: base
    ports:
      - "80:80"

৫. প্রোফাইল (Profiles)

সবসময় সব কন্টেইনারের দরকার হয় না। প্রোফাইল ব্যবহার করে আপনি বেছে নিতে পারেন কোনগুলো চালু হবে:

yaml
services:
  debug-tool:
    image: alpine
    profiles:
      - debug # এটি শুধু 'docker-compose --profile debug up' বললেই চলবে

৬. এডভান্সড ফিচার সামারি

ফিচারকাজ
Depends Onকন্টেইনারের শুরুর ক্রম এবং কন্ডিশন (যেমন: healthy) ঠিক করে
Healthcheckকন্টেইনারের ভেতরে সার্ভিসটি সচল কি না তা নিশ্চিত করে
Resource LimitsRAM এবং CPU ব্যবহার নিয়ন্ত্রণ করে
Build Argsডকারফাইলে ইমেজের ভেতর ডাইনামিক ডেটা পাঠাতে সাহায্য করে
Profilesসার্ভিসগুলোকে বিভিন্ন গ্রুপে ভাগ করে প্রয়োজন অনুযায়ী চালানো

TIP

প্রোডাকশনে সবসময় Resource Limits ব্যবহার করার চেষ্টা করুন। এটি আপনার সিস্টেমকে স্ট্যাবল রাখতে সাহায্য করবে।

Released under the MIT License.