Docker Compose - Advanced: প্রফেশনাল কনফিগারেশন 🚀
ডকার কম্পোজের বেসিক জানার পর, প্রোডাকশন লেভেলে অ্যাপ চালানোর জন্য কিছু অ্যাডভান্সড ফিচারের প্রয়োজন হয়। এই গাইডে আমরা শিখবো কিভাবে কন্টেইনারের রিসোর্স কন্ট্রোল করা যায়, হেলথচেক সেটআপ করা যায় এবং প্রোফাইল ব্যবহার করে স্মার্টলি কন্টেইনার ম্যানেজ করা যায়।
১. হেলথচেক (Healthcheck)
কখনো কখনো একটি কন্টেইনার "Running" দেখালেও ভেতরে সার্ভিসটি আসলে রেডি থাকে না (যেমন- ডাটাবেস চালু হতে সময় নেয়)। হেলথচেক দিয়ে এটি চেক করা যায়:
services:
db:
image: postgres
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 10s
timeout: 5s
retries: 5২. রিসোর্স লিমিট (Resource Limits)
একটি কন্টেইনার যেন আপনার পুরো সার্ভারের সব RAM বা CPU দখল করে না নেয়, সেজন্য লিমিট সেট করা জরুরি:
services:
web:
image: nginx
deploy:
resources:
limits:
cpus: "0.50" # সর্বোচ্চ ৫০% CPU
memory: 512M # সর্বোচ্চ ৫১২ মেগাবাইট RAM
reservations:
memory: 128M # মিনিমাম ১২৮ মেগাবাইট রিজার্ভ থাকবে৩. বিল্ড আর্গুমেন্ট (Build Arguments)
ইমেজ বিল্ড করার সময় যদি কোনো ভ্যারিয়েবল পাস করার দরকার হয় (যেমন- সফটওয়্যার ভার্সন):
services:
api:
build:
context: .
args:
- APP_VERSION=1.0.0৪. এক্সটেন্ডস এবং ইনহেরিটেন্স (Extends)
একই কনফিগারেশন বারবার না লিখে একটি কমন অংশকে অন্য সার্ভিসে ব্যবহার করা যায়:
services:
base:
image: my-app
environment:
- NODE_ENV=production
web:
extends: base
ports:
- "80:80"৫. প্রোফাইল (Profiles)
সবসময় সব কন্টেইনারের দরকার হয় না। প্রোফাইল ব্যবহার করে আপনি বেছে নিতে পারেন কোনগুলো চালু হবে:
services:
debug-tool:
image: alpine
profiles:
- debug # এটি শুধু 'docker-compose --profile debug up' বললেই চলবে৬. এডভান্সড ফিচার সামারি
| ফিচার | কাজ |
|---|---|
| Depends On | কন্টেইনারের শুরুর ক্রম এবং কন্ডিশন (যেমন: healthy) ঠিক করে |
| Healthcheck | কন্টেইনারের ভেতরে সার্ভিসটি সচল কি না তা নিশ্চিত করে |
| Resource Limits | RAM এবং CPU ব্যবহার নিয়ন্ত্রণ করে |
| Build Args | ডকারফাইলে ইমেজের ভেতর ডাইনামিক ডেটা পাঠাতে সাহায্য করে |
| Profiles | সার্ভিসগুলোকে বিভিন্ন গ্রুপে ভাগ করে প্রয়োজন অনুযায়ী চালানো |
TIP
প্রোডাকশনে সবসময় Resource Limits ব্যবহার করার চেষ্টা করুন। এটি আপনার সিস্টেমকে স্ট্যাবল রাখতে সাহায্য করবে।