সরাসরি প্রধান সামগ্রীতে চলে যান

Multiple Docker Containers network-based communication setup Bangla

🧭 Docker Multi-Container Networking Guideline (Reusable)

🧩 ১. মৌলিক ধারণা

প্রত্যেকটি Docker Compose প্রজেক্ট run করলে সেটি নিজে থেকেই একটা আলাদা network তৈরি করে — যেমন myapp_default, postgres_default ইত্যাদি।

⚠️ আলাদা compose প্রজেক্টের container গুলো একে অপরকে ping করতে পারে না, যতক্ষণ না তাদেরকে একই network-এ manually connect করানো হয়।


⚙️ ২. যদি দুইটা আলাদা Compose Project থাকে

ধরা যাক তোমার আছে:

  • একটি postgres container → postgres_default network-এ
  • একটি Spring Boot app → practice-spring-boot-jdk21_default network-এ

এখন 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_default network ব্যবহার করবে।


💡 ৪. সাধারণ টিপস

| বিষয় | নির্দেশনা | | ------------------- | ---------------------------------------------------------- | | 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

মন্তব্যসমূহ

এই ব্লগটি থেকে জনপ্রিয় পোস্টগুলি

সিজ্জিন (Sijjin) vs ইল্লিয়িন (Illiyin) পার্থক্য Difference

Sijjin (سِجِّين) এবং Illiyin (عِلِّيِّين) —এ দুটি শব্দ কুরআনে এসেছে এবং দুটোই মানুষের আমলনামা সংরক্ষণ সম্পর্কিত স্থানকে নির্দেশ করে। ১. সিজ্জিন (Sijjin) সিজ্জিন হলো পাপীদের (কাফের, মুনাফিক ও দুরাচারীদের) আমলনামা সংরক্ষণের স্থান। এটি সাত তলদেশের নীচে এক কারাগার বা অন্ধকার জগতে অবস্থিত বলে উল্লেখ রয়েছে। সূরা আল-মুতাফফিফীন (৮৩:৭-৯) তে বলা হয়েছে: "كَلَّا إِنَّ كِتَابَ الْفُجَّارِ لَفِي سِجِّينٍ ۝ وَمَا أَدْرَاكَ مَا سِجِّينٌ ۝ كِتَابٌ مَرْقُومٌ" অর্থ: "না, পাপীদের আমলনামা সিজ্জিনে সংরক্ষিত। তুমি কি জানো, সিজ্জিন কী? এটি এক লিখিত দলিল।" সিজ্জিনকে একটি কারাগার, সংকীর্ণ স্থান, বা নিচের স্তরে অবস্থিত এক অন্ধকার দুনিয়া হিসেবে ব্যাখ্যা করা হয়। ২. ইল্লিয়িন (Illiyin) ইল্লিয়িন হলো সৎকর্মশীলদের (মুমিন ও নেককারদের) আমলনামা সংরক্ষণের স্থান । এটি সপ্তম আসমানের ওপরে সংরক্ষিত এক সম্মানিত স্থান। সূরা আল-মুতাফফিফীন (৮৩:১৮-২১) তে বলা হয়েছে: "كَلَّا إِنَّ كِتَابَ الْأَبْرَارِ لَفِي عِلِّيِّينَ ۝ وَمَا أَدْرَاكَ مَا عِلِّيُّونَ ۝ كِتَابٌ مَرْقُومٌ ۝ يَش...

Allow CSP in Chrome and Firefox and Call Server API in Spring boot Bangla

ঠিক আছে 🔥। আমি তোমার জন্য একটি সম্পূর্ণ README-style document বানাচ্ছি, যেখানে Chrome এবং Firefox দুটোতেই Spring Boot backend-এর জন্য CSP এবং CORS ঠিকভাবে configure করার process step-by-step আছে। README: CSP & CORS Configuration for Spring Boot (Chrome & Firefox) Overview এই document-এ দেখানো হয়েছে কিভাবে: Spring Boot backend থেকে Content Security Policy (CSP) configure করা যায়। Spring Boot backend থেকে Cross-Origin Resource Sharing (CORS) allow করা যায়। Chrome ও Firefox-এ fetch/API calls চালাতে হয় কীভাবে। ⚠️ Important: নিচের setup mostly development/test environment-এর জন্য। Production environment-এ অবশ্যই CSP & CORS secure করে configure করতে হবে। 1. Spring Boot Backend Configuration 1.1 CSP (Content Security Policy) Spring Boot WebFlux বা Spring MVC application-এ CSP header সেট করতে হবে: a) WebFlux (reactive) import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web....

AWS Lambda কী?

AWS Lambda কী? AWS Lambda হল একটি সার্ভারলেস কম্পিউটিং সার্ভিস, যা AWS ক্লাউডে কোড রান করার জন্য ব্যবহৃত হয়। Lambda ব্যবহারকারীদের কোনো সার্ভার বা ইনফ্রাস্ট্রাকচার ম্যানেজমেন্ট ছাড়াই কোড চালাতে সাহায্য করে। এটি মূলত ইভেন্ট-ড্রিভেন, যেখানে বিভিন্ন AWS সেবা (যেমন S3, DynamoDB, SNS) বা কাস্টম ইভেন্ট দ্বারা Lambda ফাংশন ট্রিগার হতে পারে। Lambda কোড রান করার পর তা একাধিক আউটপুট জেনারেট করতে পারে, অথবা অন্যান্য সিস্টেমে ফলাফল পাঠাতে পারে। Lambda একটি serverless প্ল্যাটফর্ম, যার মানে হল আপনি কোনও সার্ভার বা হোস্টিং ম্যানেজ করবেন না। আপনি শুধুমাত্র আপনার কোড লেখবেন এবং Lambda সার্ভিস তার ইনফ্রাস্ট্রাকচার পরিচালনা করবে। AWS Lambda এর প্রধান সুবিধা: সার্ভার পরিচালনা প্রয়োজন নেই : আপনি কেবল কোড লেখবেন, সার্ভার বা ইনফ্রাস্ট্রাকচার সম্পর্কিত কোনও চিন্তা করার দরকার নেই। স্কেলিং : Lambda স্বয়ংক্রিয়ভাবে ইনফ্রাস্ট্রাকচার স্কেল করতে পারে। আপনার অ্যাপ্লিকেশনের উপর ট্রাফিক বাড়লে Lambda আপনাআপনি সেই অনুযায়ী স্কেল হবে। কোনও ইনিশিয়াল কস্ট নেই : আপনি শুধুমাত্র আপনার কোড রান হওয়া সময়ের জন্য খরচ দেন, স...