DockerIntermediate
MongoDB, PostgreSQL ও Redis Docker-এ
অফিসিয়াল DB images, volume-সহ persistent setup, healthcheck — বাংলায়।
13টি অংশবাংলা ভাষায়
ডাটাবেস লোকালি install করার বদলে Docker-এ চালানো এখন সাধারণ অভ্যাস — সুবিধা: version switching সহজ, পরিষ্কার remove, production-এ অনুরূপ environment।
MongoDB
compose.yml (mongo)yaml
yaml
services:
mongodb:
image: mongo:7
restart: unless-stopped
ports:
- "27017:27017"
environment:
- MONGO_INITDB_ROOT_USERNAME=admin
- MONGO_INITDB_ROOT_PASSWORD=secret
volumes:
- mongo-data:/data/db
volumes:
mongo-data:Mongoose connection (inside app)js
js
const URI = process.env.MONGODB_URI
// container-এ: mongodb://admin:secret@mongodb:27017/blog?authSource=admin
await mongoose.connect(URI, {
serverSelectionTimeoutMS: 5000,
});PostgreSQL
compose.yml (postgres)yaml
yaml
services:
postgres:
image: postgres:16-alpine
restart: unless-stopped
ports:
- "5432:5432"
environment:
- POSTGRES_USER=app
- POSTGRES_PASSWORD=pass
- POSTGRES_DB=mydb
volumes:
- pg-data:/var/lib/postgresql/data
volumes:
pg-data:pg connectionjs
js
import pg from "pg";
const client = new pg.Client({
connectionString: process.env.DATABASE_URL,
// postgres://app:pass@postgres:5432/mydb
});Redis
compose.yml (redis)yaml
yaml
services:
redis:
image: redis:7-alpine
restart: unless-stopped
ports:
- "6379:6379"
# password দিতে চাইলে:
command: ["redis-server", "--requirepass", "secret"]
volumes:
- redis-data:/data
volumes:
redis-data:ioredis connectionjs
js
import Redis from "ioredis";
const redis = new Redis({
host: process.env.REDIS_HOST || "redis",
port: Number(process.env.REDIS_PORT) || 6379,
password: process.env.REDIS_PASSWORD,
});Healthcheck যোগ করা
compose.ymlyaml
yaml
services:
postgres:
image: postgres:16-alpine
healthcheck:
test: ["CMD-SHELL", "pg_isready -U app -d mydb"]
interval: 5s
timeout: 3s
retries: 10সবসময় volume দিন
ডাটাবেস container চালানোর সময় সবসময় volume mount করুন — নাহলে container remove করলে ডেটা পুরো হারিয়ে যায়। ব্যাকআপও নিন (docker exec + mongodump / pg_dump)।
শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।