{
“@context”: “https://schema.org”,
“@type”: “TechArticle”,
“headline”: “2026 সালে স্থানীয় উন্নয়নের জন্য ডকার কম্পোজ কীভাবে ব্যবহার করবেন: সম্পূর্ণ নির্দেশিকা”,
“description”: “2026 সালে স্থানীয় ডেভের জন্য মাস্টার ডকার কম্পোজ — মাল্টি-সার্ভিস সেটআপ, হট রিলোড, নেটওয়ার্কিং, ভলিউম, সিক্রেটস এবং প্রোডাকশন প্যারিটি।”,
“url”: “https://techpulsesite.com/how-to-use-docker-compose-for-local-deve-bn/”,
“datePublished”: “2026-06-28T11:20:00+00:00”,
“dateModified”: “2026-06-29T04:14:17+00:00”,
“author”: {
“@type”: “Organization”,
“name”: “TechPulse Editorial Team”,
“url”: “https://techpulsesite.com”
},
“publisher”: {
“@type”: “Organization”,
“name”: “TechPulse”,
“url”: “https://techpulsesite.com”
},
“inLanguage”: “bn”
}
{
“@context”: “https://schema.org”,
“@type”: “TechArticle”,
“headline”: “2026 সালে স্থানীয় উন্নয়নের জন্য ডকার কম্পোজ কীভাবে ব্যবহার করবেন: সম্পূর্ণ নির্দেশিকা”,
“description”: “2026 সালে স্থানীয় ডেভের জন্য মাস্টার ডকার কম্পোজ — মাল্টি-সার্ভিস সেটআপ, হট রিলোড, নেটওয়ার্কিং, ভলিউম, সিক্রেটস এবং প্রোডাকশন প্যারিটি।”,
“url”: “https://techpulsesite.com/how-to-use-docker-compose-for-local-deve-bn/”,
“datePublished”: “2026-06-28T11:20:00+00:00”,
“dateModified”: “2026-06-29T02:19:33+00:00”,
“author”: {
“@type”: “Organization”,
“name”: “TechPulse Editorial Team”,
“url”: “https://techpulsesite.com”
},
“publisher”: {
“@type”: “Organization”,
“name”: “TechPulse”,
“url”: “https://techpulsesite.com”
},
“inLanguage”: “bn”
}
ডকার রচনা স্থানীয় উন্নয়নকে “আমার মেশিনে কাজ করে” থেকে পুনরুত্পাদনযোগ্য, উৎপাদনের মতো পরিবেশে রূপান্তরিত করে যা প্রতিটি দলের সদস্য কয়েক মিনিটের মধ্যে ঘুরতে পারে। 2026 সালে, ডকার ডেস্কটপ এবং সিএলআই-এ তৈরি ডকার কম্পোজ v2 সহ, মাল্টি-সার্ভিস স্থানীয় স্ট্যাকগুলি পরিচালনা করার জন্য এর চেয়ে ভাল আর কোনও সরঞ্জাম নেই।
📋 Table of Contents
- কেন উন্নয়নের জন্য ডকার রচনা?
- প্রকল্প সেটআপ: ফুল-স্ট্যাক অ্যাপ্লিকেশন
- কোর ডকার-কম্পোজ.ইএমএল
- হট রিলোডের জন্য ডেভেলপমেন্ট ডকারফাইল
- স্থানীয় কাস্টমাইজেশনের জন্য ফাইল ওভাররাইড করুন
- অপরিহার্য আদেশ
- গোপনীয়তা সঠিকভাবে পরিচালনা করা
- পরিষেবাগুলির মধ্যে নেটওয়ার্কিং
- স্বাস্থ্য পরীক্ষা এবং পরিষেবা নির্ভরতা
- প্রোডাকশন বনাম ডেভেলপমেন্ট কম্পোজ ফাইল
- প্রায়শই জিজ্ঞাসিত প্রশ্ন
- ডকার কম্পোজ হল 2026 সালে স্থানীয় মাল্টি-সার্ভিস ডেভেলপমেন্টের জন্য নির্দিষ্ট টুল। এই গাইডের সেটআপ — বেস কম্পোজ ফাইল + ওভাররাইড ফাইল + সঠিক ভলিউম মাউন্ট + হেলথচেক — আপনাকে স্থানীয়ভাবে প্রোডাকশন প্যারিটি দেয়, দ্রুত ডেভেলপমেন্টের জন্য হট রিলোড এবং নতুন দলের সদস্যদের জন্য এক-কমান্ড স্টার্ট দেয়। এটি সঠিকভাবে সেট আপ করতে 2-3 ঘন্টা বিনিয়োগ করুন এবং "এটি আমার মেশিনে কাজ করে" ডিবাগিং এর শত শত ঘন্টা সংরক্ষণ করুন৷
কেন উন্নয়নের জন্য ডকার রচনা?
- পোস্টগ্রেস, রেডিস, আপনার এপিআই, এবং একজন সারি কর্মীকে একটি কমান্ড দিয়ে স্পিন করুন
- “এটি আমার মেশিনে কাজ করে” বাদ দিন — প্রত্যেক ডেভেলপারের অভিন্ন পরিবেশ আছে
- কুবারনেটস না চালিয়ে স্থানীয়ভাবে প্রোডাকশন সার্ভিস টপোলজি মেলান
- নোড সংস্করণ, ডাটাবেস সংস্করণ বা পরিষেবা কনফিগারেশনের মধ্যে সহজেই স্যুইচ করুন
প্রকল্প সেটআপ: ফুল-স্ট্যাক অ্যাপ্লিকেশন
আমরা এর জন্য একটি রচনা সেটআপ তৈরি করব: Next.js ফ্রন্টএন্ড, FastAPI ব্যাকএন্ড, PostgreSQL, Redis এবং একজন সেলারি কর্মী।
myapp/
├── docker-compose.yml
├── docker-compose.override.yml # local dev overrides
├── frontend/
│ ├── Dockerfile
│ └── ...
├── backend/
│ ├── Dockerfile
│ └── ...
└── .env.local
কোর ডকার-কম্পোজ.ইএমএল
version: "3.9"
services:
# ── PostgreSQL ─────────────────────────────────────────────
db:
image: postgres:15-alpine
environment:
POSTGRES_DB: ${DB_NAME:-myapp}
POSTGRES_USER: ${DB_USER:-postgres}
POSTGRES_PASSWORD: ${DB_PASS:-devpassword}
volumes:
- postgres_data:/var/lib/postgresql/data
- ./backend/scripts/init.sql:/docker-entrypoint-initdb.d/init.sql
ports:
- "5432:5432"
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 5s
timeout: 5s
retries: 5
# ── Redis ──────────────────────────────────────────────────
redis:
image: redis:7-alpine
ports:
- "6379:6379"
command: redis-server --maxmemory 256mb --maxmemory-policy allkeys-lru
# ── FastAPI Backend ────────────────────────────────────────
backend:
build:
context: ./backend
dockerfile: Dockerfile.dev
volumes:
- ./backend:/app # hot reload: source mounted
ports:
- "8000:8000"
environment:
DATABASE_URL: postgresql://postgres:devpassword@db:5432/myapp
REDIS_URL: redis://redis:6379/0
ENV: development
depends_on:
db:
condition: service_healthy
redis:
condition: service_started
command: uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload
# ── Celery Worker ──────────────────────────────────────────
worker:
build:
context: ./backend
dockerfile: Dockerfile.dev
volumes:
- ./backend:/app
environment:
DATABASE_URL: postgresql://postgres:devpassword@db:5432/myapp
REDIS_URL: redis://redis:6379/0
depends_on: [db, redis]
command: celery -A app.tasks worker --loglevel=info
# ── Next.js Frontend ───────────────────────────────────────
frontend:
build:
context: ./frontend
dockerfile: Dockerfile.dev
volumes:
- ./frontend:/app
- /app/node_modules # anonymous volume prevents override
ports:
- "3000:3000"
environment:
NEXT_PUBLIC_API_URL: http://localhost:8000
command: npm run dev
volumes:
postgres_data:
হট রিলোডের জন্য ডেভেলপমেন্ট ডকারফাইল
# backend/Dockerfile.dev
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
# Don't copy source — it's mounted as volume for hot reload
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--reload"]
# frontend/Dockerfile.dev
FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
# Source mounted as volume; node_modules stays in container
CMD ["npm", "run", "dev"]
স্থানীয় কাস্টমাইজেশনের জন্য ফাইল ওভাররাইড করুন
# docker-compose.override.yml (not committed to git)
# Each developer's personal overrides
services:
backend:
environment:
DEBUG: "true"
LOG_LEVEL: debug
ports:
- "8000:8000"
- "5678:5678" # debugger port
db:
ports:
- "5432:5432" # expose to host for TablePlus/DBeaver access
ডকার রচনা স্বয়ংক্রিয়ভাবে একত্রিত হয়docker-compose.override.yml বেস ফাইলের সাথে — নির্দিষ্ট করার দরকার নেই-f.
অপরিহার্য আদেশ
# Start everything
docker compose up -d
# View logs (all services)
docker compose logs -f
# View logs for one service
docker compose logs -f backend
# Run a command in a service
docker compose exec backend python manage.py migrate
docker compose exec db psql -U postgres -d myapp
# Rebuild a specific service after Dockerfile change
docker compose up -d --build backend
# Stop and remove everything (keep volumes)
docker compose down
# Stop, remove containers AND volumes (fresh slate)
docker compose down -v
# Scale a service
docker compose up -d --scale worker=3
গোপনীয়তা সঠিকভাবে পরিচালনা করা
# .env.local (gitignored)
DB_PASS=mylocalsecretpassword
SECRET_KEY=dev-only-not-production
# docker-compose.yml references env vars
environment:
DB_PASS: ${DB_PASS}
# Or use Docker secrets for production-like setups
secrets:
db_password:
file: ./secrets/db_password.txt
services:
backend:
secrets: [db_password]
পরিষেবাগুলির মধ্যে নেটওয়ার্কিং
একই কম্পোজ ফাইলের পরিষেবাগুলি পরিষেবার নাম দ্বারা যোগাযোগ করে৷ আপনার ব্যাকএন্ড PostgreSQL এর সাথেdb:5432এ সংযোগ করে , নাlocalhost:5432. এটি প্রোডাকশন কন্টেইনার নেটওয়ার্কিংয়ের সাথে ঠিক মেলে:
# backend connects to other services by service name
DATABASE_URL=postgresql://postgres:pass@db:5432/myapp
REDIS_URL=redis://redis:6379/0
# NOT localhost — that would be the container itself
# NOT the host IP — that breaks portability
স্বাস্থ্য পরীক্ষা এবং পরিষেবা নির্ভরতা
services:
backend:
depends_on:
db:
condition: service_healthy # waits for DB to pass healthcheck
redis:
condition: service_started # just waits for container to start
db:
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 5s
retries: 5
start_period: 10s
প্রোডাকশন বনাম ডেভেলপমেন্ট কম্পোজ ফাইল
# Use specific files explicitly
docker compose -f docker-compose.yml up -d # dev
docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d # prod
# In production: remove volume mounts, use built images, add resource limits
# docker-compose.prod.yml
services:
backend:
image: myapp-backend:1.2.0 # pinned production image
restart: unless-stopped
deploy:
resources:
limits:
memory: 512m
প্রায়শই জিজ্ঞাসিত প্রশ্ন
প্রশ্ন: স্থানীয় দেবের জন্য ডকার কম্পোজ বনাম কুবারনেটস?
উত্তর: স্থানীয় উন্নয়নের জন্য ডকার রচনা। উৎপাদনের জন্য Kubernetes. স্থানীয়ভাবে Kubernetes কনফিগার পরীক্ষা করার জন্য Minikube বা k3d। কম্পোজ সহজ, দ্রুত এবং ডেভ ওয়ার্কফ্লোগুলির জন্য যথেষ্ট।
প্রশ্ন: ভলিউম মাউন্টের সাথেও কেন আমার কোড পরিবর্তন প্রতিফলিত হয় না?
উত্তর: হট রিলোড ফ্রেমওয়ার্কের উপর নির্ভর করে (FastAPI –reload, Next.js dev সার্ভার)। যদি কাজ না করে, ভলিউম মাউন্ট পাথ সঠিক এবং কন্টেইনারের কার্যকারী ডিরেক্টরি মেলে তা পরীক্ষা করুন। এছাড়াও পরিষেবা পুনরায় চালু করুন:docker compose restart backend.
প্রশ্ন: আমি কীভাবে স্বয়ংক্রিয়ভাবে ডাটাবেস মাইগ্রেশন চালাব?
উত্তর: আপনার পরিষেবাতে একটি কমান্ড যোগ করুন বা একটি পৃথক মাইগ্রেশন পরিষেবা ব্যবহার করুন: . অথবা সার্ভার শুরু করার আগে entrypoint.sh এ যোগ করুন।docker compose run --rm backend alembic upgrade headপ্রশ্ন: আমি কীভাবে পরিষেবাগুলির মধ্যে ডেটা ভাগ করব?
A: ডাটাবেস ডেটার জন্য নামকৃত ভলিউমের মাধ্যমে। কনফিগারেশনের জন্য পরিবেশ ভেরিয়েবলের মাধ্যমে। পরিষেবা থেকে পরিষেবা যোগাযোগের জন্য নেটওয়ার্কের মাধ্যমে৷ কন্টেইনারগুলির মধ্যে ফাইলগুলিকে বাঁধা-মাউন্ট করা এড়িয়ে চলুন – পরিবর্তে পরিষেবা API ব্যবহার করুন৷
প্রশ্ন: ডকারে চলমান একটি পরিষেবা আমি কীভাবে ডিবাগ করব?
উত্তর: আপনার কম্পোজ ফাইলে ডিবাগার পোর্ট ম্যাপ করুন, আপনার আইডিই কনফিগার করুন (ভিএস কোডের রিমোট – কন্টেইনার বা পাইথন ডিবাগপি)। অথবা পাত্রে চালান:
উপসংহারdocker compose exec backend bash.
ডকার কম্পোজ হল 2026 সালে স্থানীয় মাল্টি-সার্ভিস ডেভেলপমেন্টের জন্য নির্দিষ্ট টুল। এই গাইডের সেটআপ — বেস কম্পোজ ফাইল + ওভাররাইড ফাইল + সঠিক ভলিউম মাউন্ট + হেলথচেক — আপনাকে স্থানীয়ভাবে প্রোডাকশন প্যারিটি দেয়, দ্রুত ডেভেলপমেন্টের জন্য হট রিলোড এবং নতুন দলের সদস্যদের জন্য এক-কমান্ড স্টার্ট দেয়। এটি সঠিকভাবে সেট আপ করতে 2-3 ঘন্টা বিনিয়োগ করুন এবং “এটি আমার মেশিনে কাজ করে” ডিবাগিং এর শত শত ঘন্টা সংরক্ষণ করুন৷
ডকার কম্পোজ হল 2026 সালে স্থানীয় মাল্টি-সার্ভিস ডেভেলপমেন্টের জন্য নির্দিষ্ট টুল। এই গাইডের সেটআপ — বেস কম্পোজ ফাইল + ওভাররাইড ফাইল + সঠিক ভলিউম মাউন্ট + হেলথচেক — আপনাকে স্থানীয়ভাবে প্রোডাকশন প্যারিটি দেয়, দ্রুত ডেভেলপমেন্টের জন্য হট রিলোড এবং নতুন দলের সদস্যদের জন্য এক-কমান্ড স্টার্ট দেয়। এটি সঠিকভাবে সেট আপ করতে 2-3 ঘন্টা বিনিয়োগ করুন এবং “এটি আমার মেশিনে কাজ করে” ডিবাগিং এর শত শত ঘন্টা সংরক্ষণ করুন৷
🔗 Share this article
✍️ Leave a Comment