🧭 Docker Multi-Container Networking Guideline (Reusable)
🧩 ১. মৌলিক ধারণা
প্রত্যেকটি Docker Compose প্রজেক্ট run করলে সেটি নিজে থেকেই
একটা আলাদা network তৈরি করে —
যেমন myapp_default, postgres_default ইত্যাদি।
⚠️ আলাদা compose প্রজেক্টের container গুলো একে অপরকে ping করতে পারে না, যতক্ষণ না তাদেরকে একই network-এ manually connect করানো হয়।
⚙️ ২. যদি দুইটা আলাদা Compose Project থাকে
ধরা যাক তোমার আছে:
- একটি
postgrescontainer →postgres_defaultnetwork-এ - একটি Spring Boot app →
practice-spring-boot-jdk21_defaultnetwork-এ
এখন app container থেকে postgres container এ connect করতে হলে
তোমাকে app container কে postgres_default network-এ attach করতে হবে।
🔧 ধাপসমূহ:
➤ ১️⃣ Available network list দেখো:
docker network ls
➤ ২️⃣ Postgres container এর network নাম খুঁজে বের করো:
docker inspect postgres | grep "NetworkMode"
ধরো, output এসেছে → postgres_default
➤ ৩️⃣ App container কে ওই network-এ connect করো:
docker network connect postgres_default blogger-app
➤ ৪️⃣ যাচাই করো যে connect হয়েছে কিনা:
docker inspect blogger-app --format '{{json .NetworkSettings.Networks}}' | jq
এখানে "postgres_default" নাম দেখা গেলে ঠিক আছে ✅
➤ ৫️⃣ Connection test করো:
docker exec -it blogger-app bash
ping postgres
যদি reply আসে, তাহলে DB connection সফল।
🧱 ৩. Future-friendly Compose File Setup
তুমি চাওলে সরাসরি docker-compose.yml ফাইলেই external network define করে রাখতে পারো যাতে manual attach করতে না হয়।
🧾 Example:
services:
app:
build: .
container_name: blogger-app
environment:
SPRING_DATASOURCE_URL: jdbc:postgresql://postgres:5432/mydb
SPRING_DATASOURCE_USERNAME: postgres
SPRING_DATASOURCE_PASSWORD: postgres
networks:
- postgres-network # external network name
networks:
postgres-network:
external: true
name: postgres_default
⚙️
external: trueমানে — এই compose নতুন network তৈরি করবে না, বরং আগে থেকে থাকাpostgres_defaultnetwork ব্যবহার করবে।
💡 ৪. সাধারণ টিপস
| বিষয় | নির্দেশনা |
| ------------------- | ---------------------------------------------------------- |
| Network check | docker network inspect <network-name> |
| Container attach | docker network connect <network> <container> |
| Container detach | docker network disconnect <network> <container> |
| Ping test | docker exec -it <container> ping <target-container-name> |
| Compose auto-attach | Compose ফাইলেই networks: সেকশন যোগ করো |
| Same network rule | Container name দিয়েই DB host হিসেবে connect করা যায় |
✅ ৫. Summary (Quick Copy-Paste Cheatsheet)
# Find postgres container network
docker inspect postgres | grep NetworkMode
# Connect app container to same network
docker network connect postgres_default blogger-app
# Verify networks attached
docker inspect blogger-app --format '{{json .NetworkSettings.Networks}}' | jq
# Test connectivity
docker exec -it blogger-app bash
ping postgres
মন্তব্যসমূহ
একটি মন্তব্য পোস্ট করুন
আপনার সমস্যাটি কমেন্ট করে আমাদের জানান :-d