Header Ads

Header ADS

Installation : Docker Compose File

  

আমরা এখানে ২টা জিনিস চালাবো:
1️⃣ OpenSearch (Search Engine)
2️⃣ OpenSearch Dashboards (Web UI)

 

Project Folder Structure

প্রথমে একটি ফোল্ডার তৈরি করো।

opensearch-project
│
├── docker-compose.yml

 

 

Docker Compose File Analysis

version: '3'
services:
  opensearch-node:
    image: opensearchproject/opensearch:2.12.0
    environment:
      - discovery.type=single-node
      - OPENSEARCH_INITIAL_ADMIN_PASSWORD=Admin123!
    ports:
      - "9200:9200"

  opensearch-dashboards:
    image: opensearchproject/opensearch-dashboards:2.12.0
    ports:
      - "5601:5601"
    environment:
      OPENSEARCH_HOSTS: '["https://opensearch-node:9200"]'
    depends_on:
      - opensearch-node

১️)version: '3'

  1. এটি Docker Compose ফাইলের ভার্সন

  2. '3' বলতে বোঝায় যে আমরা Docker Compose version 3 syntax ব্যবহার করছি।

  3. বিকল্প: '2', '3.9' ইত্যাদি।

💡 Tip: তুমি নতুন Features চাইলে version 3.9 ব্যবহার করতে পারো, কিন্তু beginner এর জন্য 3 ঠিক আছে।


২️)services:

  1. এখানে তুমি ডিফাইন করছো কোন কোন container চালাতে হবে

  2. প্রতিটি service মানে একটি container।

এই ফাইলের দুটি service আছে:

  1. opensearch-node → OpenSearch engine

  2. opensearch-dashboards → Web UI


৩️)opensearch-node:

image

image: opensearchproject/opensearch:2.12.0
  1. কোন Docker image ব্যবহার করবে তা বলে।

  2. এখানে আমরা OpenSearch 2.12.0 version ব্যবহার করছি।

💡 অন্য মান হতে পারে:

  1. opensearchproject/opensearch:latest → সর্বশেষ version

  2. অন্য version, যেমন opensearchproject/opensearch:2.13.0


environment

environment:
  - discovery.type=single-node
  - OPENSEARCH_INITIAL_ADMIN_PASSWORD=Admin123!
  1. environment variable = container চালানোর সময় configuration settings

1️⃣ discovery.type=single-node

  1. OpenSearch Cluster একটি Node হিসেবে চলবে।

  2. Multi-node cluster থাকলে এটা অন্যভাবে configure করতে হবে।

2️⃣ OPENSEARCH_INITIAL_ADMIN_PASSWORD=Admin123!

  1. OpenSearch এর admin password

  2. তুমি চাইলে অন্য password দিতে পারো যেমন MySecretPass123

💡 অন্য environment variables:

  1. cluster.name → Cluster নাম

  2. node.name → Node এর নাম

  3. network.host → কোন IP এ container listening করবে


ports

ports:
  - "9200:9200"
  1. Container এর port কে host machine এর port এর সাথে মেপ করা।

  2. প্রথম সংখ্যা = host port (তোমার ল্যাপটপে access এর জন্য)

  3. দ্বিতীয় সংখ্যা = container port (OpenSearch internally এই port use করছে)

💡 উদাহরণ:

  1. "9300:9200" → তুমি host এ 9300 port use করে OpenSearch access করবে

  2. "9200:9200" → default


৪️) opensearch-dashboards:

image

image: opensearchproject/opensearch-dashboards:2.12.0
  1. OpenSearch Dashboards UI এর image

ports

ports:
  - "5601:5601"
  1. host machine এ 5601 port open হবে → browser থেকে access করতে পারবে

environment

environment:
  OPENSEARCH_HOSTS: '["https://opensearch-node:9200"]'
  1. Dashboards কে বলে “OpenSearch Node কে কোথায় খুঁজে পাবে”

  2. এখানে Node নামের container ব্যবহার করা হয়েছে → opensearch-node

💡 তুমি চাইলে এইভাবে লিখতে পারো:

  1. OPENSEARCH_HOSTS: '["https://localhost:9200"]'

depends_on

depends_on:
  - opensearch-node
  1. এটা বলে Dashboards container শুধু তখনই start হবে যখন opensearch-node ready।

  2. না হলে error দিতে পারে কারণ Node না থাকলে Dashboards connect করতে পারবে না।


৫️) সারসংক্ষেপ

Attributeকাজউদাহরণ / মান
versionCompose file version   '3', '3.9'
servicescontainer listopensearch-node, opensearch-dashboards
imageকোন Docker image ব্যবহারopensearchproject/opensearch:2.12.0
environment       container configurationdiscovery.type, OPENSEARCH_INITIAL_ADMIN_PASSWORD
portshost ↔ container port mapping"9200:9200", "5601:5601"
depends_onকোন container আগে start হবেopensearch-node

💡 Mentor Tip:

  1. তুমি সব কিছু মুখস্ত করার দরকার নেই।

  2. যেটা সব container চালাতে essential:

    1. image

    2. ports

    3. environment variables (যেমন password)

  3. Optional: depends_on, container_name, volumes, ulimits



Data Persistence (খুব গুরুত্বপূর্ণ)

আমরা এখানে এই লাইন ব্যবহার করেছি:

volumes:
  - opensearch-data:/usr/share/opensearch/data

এর মানে:

✔ Container delete হলেও
✔ OpenSearch data delete হবে না

Docker volume এ data থাকবে।




docker-compose.yml ======> docker configuration file.

Image =====> technology  (NodeJS,OpenSearch,PostgreSQL).

Container ====> full project package .

Volume ======> permanent  memory inside the docker.




Container Run করা

ফোল্ডারের ভিতরে গিয়ে run করো:

docker compose up -d

চেক করতে:

docker ps

OpenSearch Test করা

Browser এ যাও:

https://localhost:9200

User:

admin

Password:

Admin123!

Dashboard Access করা

http://localhost:5601

এখান থেকে তুমি:

  1. Index তৈরি করতে পারবে

  2. Query run করতে পারবে

  3. Data visualize করতে পারবে


API Test Example

curl -k -u admin:Admin123! https://localhost:9200

Output আসবে:

{
  "name" : "opensearch-node",
  "cluster_name" : "opensearch-cluster",
  "version" : {
    "number" : "2.12.0"
  }
}






Powered by Blogger.