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'
এটি Docker Compose ফাইলের ভার্সন।
'3'বলতে বোঝায় যে আমরা Docker Compose version 3 syntax ব্যবহার করছি।বিকল্প:
'2','3.9'ইত্যাদি।
💡 Tip: তুমি নতুন Features চাইলে version 3.9 ব্যবহার করতে পারো, কিন্তু beginner এর জন্য 3 ঠিক আছে।
২️)services:
এখানে তুমি ডিফাইন করছো কোন কোন container চালাতে হবে।
প্রতিটি service মানে একটি container।
এই ফাইলের দুটি service আছে:
opensearch-node→ OpenSearch engineopensearch-dashboards→ Web UI
৩️)opensearch-node:
image
image: opensearchproject/opensearch:2.12.0
কোন Docker image ব্যবহার করবে তা বলে।
এখানে আমরা OpenSearch 2.12.0 version ব্যবহার করছি।
💡 অন্য মান হতে পারে:
opensearchproject/opensearch:latest→ সর্বশেষ versionঅন্য version, যেমন
opensearchproject/opensearch:2.13.0
environment
environment:
- discovery.type=single-node
- OPENSEARCH_INITIAL_ADMIN_PASSWORD=Admin123!
environment variable = container চালানোর সময় configuration settings।
1️⃣ discovery.type=single-node
OpenSearch Cluster একটি Node হিসেবে চলবে।
Multi-node cluster থাকলে এটা অন্যভাবে configure করতে হবে।
2️⃣ OPENSEARCH_INITIAL_ADMIN_PASSWORD=Admin123!
OpenSearch এর admin password।
তুমি চাইলে অন্য password দিতে পারো যেমন
MySecretPass123
💡 অন্য environment variables:
cluster.name→ Cluster নামnode.name→ Node এর নামnetwork.host→ কোন IP এ container listening করবে
ports
ports:
- "9200:9200"
Container এর port কে host machine এর port এর সাথে মেপ করা।
প্রথম সংখ্যা = host port (তোমার ল্যাপটপে access এর জন্য)
দ্বিতীয় সংখ্যা = container port (OpenSearch internally এই port use করছে)
💡 উদাহরণ:
"9300:9200"→ তুমি host এ 9300 port use করে OpenSearch access করবে"9200:9200"→ default
৪️) opensearch-dashboards:
image
image: opensearchproject/opensearch-dashboards:2.12.0
OpenSearch Dashboards UI এর image
ports
ports:
- "5601:5601"
host machine এ 5601 port open হবে → browser থেকে access করতে পারবে
environment
environment:
OPENSEARCH_HOSTS: '["https://opensearch-node:9200"]'
Dashboards কে বলে “OpenSearch Node কে কোথায় খুঁজে পাবে”
এখানে Node নামের container ব্যবহার করা হয়েছে →
opensearch-node
💡 তুমি চাইলে এইভাবে লিখতে পারো:
OPENSEARCH_HOSTS: '["https://localhost:9200"]'
depends_on
depends_on:
- opensearch-node
এটা বলে Dashboards container শুধু তখনই start হবে যখন
opensearch-nodeready।না হলে error দিতে পারে কারণ Node না থাকলে Dashboards connect করতে পারবে না।
৫️) সারসংক্ষেপ
| Attribute | কাজ | উদাহরণ / মান |
|---|---|---|
| version | Compose file version | '3', '3.9' |
| services | container list | opensearch-node, opensearch-dashboards |
| image | কোন Docker image ব্যবহার | opensearchproject/opensearch:2.12.0 |
| environment | container configuration | discovery.type, OPENSEARCH_INITIAL_ADMIN_PASSWORD |
| ports | host ↔ container port mapping | "9200:9200", "5601:5601" |
| depends_on | কোন container আগে start হবে | opensearch-node |
💡 Mentor Tip:
তুমি সব কিছু মুখস্ত করার দরকার নেই।
যেটা সব container চালাতে essential:
image
ports
environment variables (যেমন password)
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
এখান থেকে তুমি:
Index তৈরি করতে পারবে
Query run করতে পারবে
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"
}
}