Academy

প্র্যাকটিস প্রোজেক্টস

Latest Technologies - ডকার (Docker) - NCTB BOOK

Docker এবং কন্টেইনারাইজেশন সম্পর্কে আপনার দক্ষতা বাড়ানোর জন্য কিছু প্র্যাকটিস প্রোজেক্টের আইডিয়া নিচে দেওয়া হলো:

১. ওয়েব অ্যাপ্লিকেশন ডেভেলপমেন্ট

  • বিবরণ: একটি সাধারণ ওয়েব অ্যাপ্লিকেশন তৈরি করুন (যেমন Flask বা Node.js ব্যবহার করে) এবং এটি Docker কন্টেইনারে চলান।
  • কর্মপরিধি:
    • একটি Dockerfile তৈরি করুন।
    • Docker Compose ব্যবহার করে ডেটাবেসের সাথে সংযোগ স্থাপন করুন (যেমন PostgreSQL বা MongoDB)।
    • কন্টেইনার তৈরি এবং চালানোর জন্য স্ক্রিপ্ট লিখুন।

২. মাইক্রোসার্ভিস আর্কিটেকচার

  • বিবরণ: বিভিন্ন মাইক্রোসার্ভিস তৈরি করুন (যেমন, একটি সার্ভিস ইউজার পরিচালনা করে, আরেকটি সার্ভিস অর্ডার পরিচালনা করে) এবং এগুলি Docker কন্টেইনারে রান করুন।
  • কর্মপরিধি:
    • প্রতিটি সার্ভিসের জন্য আলাদা Dockerfile তৈরি করুন।
    • Docker Compose ব্যবহার করে সার্ভিসগুলিকে একটি নেটওয়ার্কের মাধ্যমে সংযুক্ত করুন।
    • কন্টেইনারগুলির মধ্যে যোগাযোগ পরিচালনা করুন।

৩. লগিং এবং মনিটরিং সিস্টেম তৈরি করুন

  • বিবরণ: ELK Stack (Elasticsearch, Logstash, Kibana) ব্যবহার করে একটি লগিং এবং মনিটরিং সিস্টেম তৈরি করুন।
  • কর্মপরিধি:
    • Docker Compose ব্যবহার করে ELK Stack কন্টেইনারগুলি তৈরি করুন।
    • একটি ওয়েব অ্যাপ্লিকেশন থেকে লগ তথ্য সংগ্রহ করুন এবং ELK Stack-এ পাঠান।
    • Kibana ব্যবহার করে লগগুলি ভিজুয়ালাইজ করুন।

৪. CI/CD পাইপলাইন তৈরি করুন

  • বিবরণ: Jenkins বা GitLab CI ব্যবহার করে একটি CI/CD পাইপলাইন তৈরি করুন যা Docker ইমেজ তৈরি এবং ডিপ্লয় করে।
  • কর্মপরিধি:
    • Jenkins/GitLab CI সেটআপ করুন।
    • একটি প্রোজেক্ট তৈরি করুন যা কোড পরিবর্তন হলে স্বয়ংক্রিয়ভাবে Docker ইমেজ তৈরি করে এবং কন্টেইনারে ডিপ্লয় করে।

৫. ডেটা-বেস মাইগ্রেশন প্রোজেক্ট

  • বিবরণ: একটি ডেটাবেস মাইগ্রেশন প্রক্রিয়া তৈরি করুন যা Docker কন্টেইনারের মাধ্যমে বিভিন্ন ডেটাবেস সিস্টেমের মধ্যে ডেটা স্থানান্তর করে।
  • কর্মপরিধি:
    • ডেটাবেস সিস্টেমের কন্টেইনার তৈরি করুন (যেমন MySQL, PostgreSQL)।
    • ডেটা স্থানান্তরের জন্য স্ক্রিপ্ট লিখুন এবং কন্টেইনারে এটি চালান।

৬. সিকিউরিটি স্ক্যানিং প্রোজেক্ট

  • বিবরণ: Docker ইমেজের জন্য একটি নিরাপত্তা স্ক্যানিং টুল সেট আপ করুন (যেমন Trivy বা Clair)।
  • কর্মপরিধি:
    • একটি Dockerfile তৈরি করুন এবং একটি ইমেজ তৈরি করুন।
    • স্ক্যানিং টুলটি ইনস্টল করুন এবং আপনার ইমেজ স্ক্যান করুন।
    • রিপোর্ট তৈরি করুন এবং দুর্বলতা মেটানোর জন্য পদক্ষেপ নির্ধারণ করুন।

৭. মোবাইল অ্যাপ্লিকেশন ব্যাকএন্ড

  • বিবরণ: একটি মোবাইল অ্যাপ্লিকেশনের জন্য ব্যাকএন্ড তৈরি করুন যা Docker কন্টেইনারে চলবে।
  • কর্মপরিধি:
    • RESTful API তৈরি করুন (যেমন Flask বা Express.js ব্যবহার করে)।
    • API কন্টেইনারে রান করুন এবং MongoDB বা Firebase এর সাথে সংযুক্ত করুন।

৮. ডকুমেন্টেশন এবং টিউটোরিয়াল

  • বিবরণ: Docker ব্যবহার করে তৈরি করা আপনার প্রোজেক্টের জন্য একটি ডকুমেন্টেশন তৈরি করুন।
  • কর্মপরিধি:
    • প্রোজেক্টের স্থাপন প্রক্রিয়া, ব্যবহারের নির্দেশনা, এবং সমস্যা সমাধানের জন্য গাইড তৈরি করুন।
    • GitHub বা GitLab এ রিপোজিটরি তৈরি করুন এবং ডকুমেন্টেশন আপলোড করুন।

সারসংক্ষেপ

এই প্র্যাকটিস প্রোজেক্টগুলির মাধ্যমে আপনি Docker-এর কার্যকরী দিকগুলি শিখতে এবং বাস্তবে প্রয়োগ করতে পারবেন। প্রত্যেকটি প্রকল্প আপনাকে বাস্তব-জীবনের সমস্যাগুলি সমাধান করতে সাহায্য করবে এবং কন্টেইনারাইজেশন এবং ডকারের সাথে আপনার অভিজ্ঞতা বৃদ্ধি করবে।

Content added By

Docker ব্যবহার করে একটি Simple Web Application তৈরি করা

Docker ব্যবহার করে একটি সিম্পল ওয়েব অ্যাপ্লিকেশন তৈরি করার প্রক্রিয়া নিচে আলোচনা করা হলো। এই উদাহরণে, আমরা একটি সহজ Flask (Python)-ভিত্তিক ওয়েব অ্যাপ্লিকেশন তৈরি করব এবং এটি Docker কন্টেইনারে চালাব।

১. পরিবেশ প্রস্তুতি

প্রথমে নিশ্চিত করুন যে আপনার সিস্টেমে Docker ইনস্টল করা আছে। Docker ইনস্টল করতে হলে, অফিসিয়াল Docker ডকুমেন্টেশন অনুসরণ করুন।

২. অ্যাপ্লিকেশন তৈরি করা

২.১. প্রকল্প ফোল্ডার তৈরি করা

প্রথমে একটি নতুন ডিরেক্টরি তৈরি করুন এবং সেখানে যান:

mkdir my-flask-app
cd my-flask-app

২.২. Flask অ্যাপ্লিকেশন কোড তৈরি করা

একটি ফাইল তৈরি করুন app.py নামে এবং নিচের কোডটি লিখুন:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def home():
    return "Hello, Docker World!"

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

২.৩. প্রয়োজনীয় প্যাকেজ ইনস্টল করার জন্য requirements.txt ফাইল তৈরি করা

এখন requirements.txt নামের একটি ফাইল তৈরি করুন এবং এতে নিচের লাইনটি যোগ করুন:

Flask==2.1.1

৩. Dockerfile তৈরি করা

Dockerfile নামে একটি নতুন ফাইল তৈরি করুন এবং নিচের কনটেন্টটি যোগ করুন:

# বেস ইমেজ হিসাবে Python ব্যবহার করুন
FROM python:3.9-slim

# কাজের ডিরেক্টরি সেট করুন
WORKDIR /app

# requirements.txt ফাইল কপি করুন এবং নির্ভরতাগুলি ইনস্টল করুন
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# অ্যাপ্লিকেশন কোড কপি করুন
COPY app.py .

# অ্যাপ্লিকেশন চালানোর জন্য কমান্ড নির্ধারণ করুন
CMD ["python", "app.py"]

৪. Docker Image তৈরি করা

Dockerfile থেকে একটি Docker Image তৈরি করতে নিচের কমান্ডটি ব্যবহার করুন:

docker build -t my-flask-app .

৫. Docker কন্টেইনার চালানো

Docker Image তৈরি করার পর, একটি কন্টেইনার চালানোর জন্য নিচের কমান্ডটি ব্যবহার করুন:

docker run -d -p 5000:5000 my-flask-app
  • এখানে -d অপশনটি কন্টেইনারটিকে ব্যাকগ্রাউন্ডে চালানোর জন্য এবং -p 5000:5000 হোস্টের 5000 পোর্টকে কন্টেইনারের 5000 পোর্টের সাথে ম্যাপ করতে ব্যবহৃত হয়।

৬. অ্যাপ্লিকেশন পরীক্ষা করা

অবশেষে, আপনার ব্রাউজারে http://localhost:5000 তে যান। আপনি "Hello, Docker World!" বার্তাটি দেখতে পাবেন।

৭. কন্টেইনার থামানো

অ্যাপ্লিকেশনটি পরীক্ষা করার পর, কন্টেইনারটি থামানোর জন্য নিচের কমান্ডটি ব্যবহার করুন:

docker ps  # চলমান কন্টেইনারের তালিকা দেখতে
docker stop   # কন্টেইনার থামানোর জন্য

সারসংক্ষেপ

এই প্রক্রিয়ায়, আপনি Docker ব্যবহার করে একটি সিম্পল Flask ভিত্তিক ওয়েব অ্যাপ্লিকেশন তৈরি করেছেন। Dockerfile ব্যবহার করে ইমেজ তৈরি এবং কন্টেইনার চালানো হয়েছে, যা একটি ডেভেলপমেন্ট পরিবেশ তৈরি করতে সহায়ক। Docker এর মাধ্যমে আপনার অ্যাপ্লিকেশনটি পোর্টেবল এবং পুনঃব্যবহারযোগ্য হয়ে ওঠে।

Content added By

Docker Compose ব্যবহার করে Multi-container Application তৈরি

Docker Compose ব্যবহার করে একটি Multi-container Application তৈরি করা একটি সহজ প্রক্রিয়া। নিচে একটি উদাহরণ দেওয়া হলো যেখানে আমরা একটি সিম্পল Flask ওয়েব অ্যাপ্লিকেশন তৈরি করব, যেটি MySQL ডাটাবেসের সাথে সংযুক্ত থাকবে।

১. পরিবেশ প্রস্তুতি

প্রথমে নিশ্চিত করুন যে আপনার সিস্টেমে Docker এবং Docker Compose ইনস্টল করা আছে।

২. প্রকল্প ফোল্ডার তৈরি করা

নতুন একটি ডিরেক্টরি তৈরি করুন এবং সেখানে যান:

mkdir my-flask-app
cd my-flask-app

৩. Flask অ্যাপ্লিকেশন কোড তৈরি করা

৩.১. app.py ফাইল তৈরি করা

app.py নামে একটি ফাইল তৈরি করুন এবং নিচের কোডটি লিখুন:

from flask import Flask, request, jsonify
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:password@db/mydatabase'
db = SQLAlchemy(app)

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50))

@app.route('/')
def home():
    return "Hello, Docker World!"

@app.route('/users', methods=['POST'])
def add_user():
    name = request.json['name']
    new_user = User(name=name)
    db.session.add(new_user)
    db.session.commit()
    return jsonify({'message': 'User added!'}), 201

if __name__ == '__main__':
    db.create_all()  # ডাটাবেস তৈরি করুন
    app.run(host='0.0.0.0', port=5000)

৩.২. requirements.txt ফাইল তৈরি করা

requirements.txt নামের একটি ফাইল তৈরি করুন এবং এতে নিচের লাইনগুলি যোগ করুন:

Flask==2.1.1
Flask-SQLAlchemy==2.5.1
PyMySQL==1.0.2

৪. Dockerfile তৈরি করা

Dockerfile নামে একটি নতুন ফাইল তৈরি করুন এবং নিচের কনটেন্টটি যোগ করুন:

# বেস ইমেজ হিসাবে Python ব্যবহার করুন
FROM python:3.9-slim

# কাজের ডিরেক্টরি সেট করুন
WORKDIR /app

# requirements.txt ফাইল কপি করুন এবং নির্ভরতাগুলি ইনস্টল করুন
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# অ্যাপ্লিকেশন কোড কপি করুন
COPY app.py .

# অ্যাপ্লিকেশন চালানোর জন্য কমান্ড নির্ধারণ করুন
CMD ["python", "app.py"]

৫. Docker Compose ফাইল তৈরি করা

docker-compose.yml নামে একটি ফাইল তৈরি করুন এবং নিচের কনটেন্টটি যোগ করুন:

version: '3.8'

services:
  web:
    build: .
    ports:
      - "5000:5000"
    depends_on:
      - db
    environment:
      - FLASK_ENV=development

  db:
    image: mysql:latest
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: mydatabase
    volumes:
      - db-data:/var/lib/mysql

volumes:
  db-data:

৬. Docker Compose ব্যবহার করে Multi-container Application চালানো

Docker Compose ফাইল তৈরি করার পর, নিচের কমান্ডটি ব্যবহার করে সব সার্ভিস চালান:

docker-compose up

এটি আপনার Flask অ্যাপ্লিকেশন এবং MySQL ডাটাবেস কন্টেইনার চালু করবে।

৭. অ্যাপ্লিকেশন পরীক্ষা করা

অবশেষে, আপনার ব্রাউজারে http://localhost:5000 তে যান। আপনি "Hello, Docker World!" বার্তাটি দেখতে পাবেন।

৮. ডাটাবেসে ব্যবহারকারী যোগ করা

আপনি Postman বা curl ব্যবহার করে /users এ POST অনুরোধ পাঠিয়ে নতুন ব্যবহারকারী যোগ করতে পারেন:

curl -X POST http://localhost:5000/users -H "Content-Type: application/json" -d '{"name": "John Doe"}'

৯. কন্টেইনার বন্ধ করা

কন্টেইনার বন্ধ করার জন্য নিচের কমান্ডটি ব্যবহার করুন:

docker-compose down

সারসংক্ষেপ

এই প্রক্রিয়ায়, আপনি Docker Compose ব্যবহার করে একটি Multi-container Application তৈরি করেছেন, যেখানে একটি Flask ওয়েব অ্যাপ্লিকেশন MySQL ডাটাবেসের সাথে সংযুক্ত। Docker Compose ফাইলের মাধ্যমে সার্ভিস এবং কনফিগারেশন পরিচালনা করা হয়েছে, যা আপনার অ্যাপ্লিকেশন ডেভেলপমেন্ট এবং ডিপ্লয়মেন্ট প্রক্রিয়াকে সহজতর করে।

Content added By

Custom Docker Image তৈরি করা এবং Docker Hub এ আপলোড

নিজস্ব Docker Image তৈরি করা এবং সেটি Docker Hub এ আপলোড করা একটি সহজ প্রক্রিয়া। নিচে এই প্রক্রিয়াটি ধাপে ধাপে ব্যাখ্যা করা হলো।

১. Custom Docker Image তৈরি করা

১.১. Dockerfile তৈরি করুন

একটি নতুন ফোল্ডার তৈরি করুন এবং সেখানে একটি Dockerfile তৈরি করুন। উদাহরণস্বরূপ, নিচে একটি সিম্পল Python অ্যাপ্লিকেশন জন্য Dockerfile এর উদাহরণ দেওয়া হলো:

# Dockerfile

# বেস ইমেজ হিসাবে Python ব্যবহার করা হচ্ছে
FROM python:3.9-slim

# কাজের ডিরেক্টরি তৈরি করুন
WORKDIR /app

# প্রয়োজনীয় ফাইলগুলি কপি করুন
COPY requirements.txt ./

# নির্ভরতাগুলি ইনস্টল করুন
RUN pip install --no-cache-dir -r requirements.txt

# অ্যাপ্লিকেশন ফাইল কপি করুন
COPY . .

# ডিফল্ট কমান্ড নির্ধারণ করুন
CMD ["python", "app.py"]

১.২. প্রয়োজনীয় ফাইল তৈরি করুন

একটি requirements.txt ফাইল তৈরি করুন এবং আপনার অ্যাপ্লিকেশনের জন্য প্রয়োজনীয় প্যাকেজগুলি তালিকাবদ্ধ করুন, উদাহরণস্বরূপ:

Copy code

flask requests

এছাড়াও, একটি app.py ফাইল তৈরি করুন (এটি একটি সিম্পল Flask অ্যাপ হতে পারে):

# app.py

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return "Hello, Docker!"

if __name__ == "__main__":
    app.run(host='0.0.0.0')

১.৩. Docker Image তৈরি করুন

টার্মিনাল/কমান্ড প্রম্পট খুলুন এবং Dockerfile থাকা ফোল্ডারে যান। এরপর নিচের কমান্ডটি ব্যবহার করুন:

docker build -t myusername/my-app:latest .

এখানে:

  • myusername/my-app:latest হল আপনার Docker Image এর নাম এবং ট্যাগ।

২. Docker Hub এ আপলোড করা

২.১. Docker Hub এ লগইন করুন

আপনার Docker Hub অ্যাকাউন্টে লগইন করতে নিচের কমান্ডটি ব্যবহার করুন:

docker login

এটি আপনার Docker Hub ইউজারনেম এবং পাসওয়ার্ড চাইবে।

২.২. Docker Image আপলোড করুন

Docker Hub এ ইমেজটি আপলোড করতে নিচের কমান্ডটি ব্যবহার করুন:

docker push myusername/my-app:latest

এখানে myusername/my-app:latest হল আপনার ট্যাগকৃত Docker Image নাম।

৩. Docker Hub থেকে ইমেজ পুল করা

Docker Hub থেকে আপনার ইমেজটি ডাউনলোড করতে (পুল) নিচের কমান্ডটি ব্যবহার করুন:

docker pull myusername/my-app:latest

সারসংক্ষেপ

এই প্রক্রিয়ার মাধ্যমে আপনি একটি কাস্টম Docker Image তৈরি করেছেন এবং সেটি Docker Hub এ আপলোড করেছেন। Docker Hub এ আপলোড করা ইমেজগুলি শেয়ার এবং পুনঃব্যবহার করা সহজ করে, যা ডেভেলপমেন্ট এবং ডিপ্লয়মেন্টের সময় সুবিধা প্রদান করে। Docker ব্যবহার করে কন্টেইনারাইজড অ্যাপ্লিকেশনগুলির কার্যকারিতা এবং পোর্টেবিলিটি বৃদ্ধি পায়।

Content added By

Kubernetes Cluster এ Docker Container Deploy করা

Kubernetes ক্লাস্টারে Docker কন্টেইনার ডিপ্লয় করা একটি সাধারণ এবং কার্যকরী প্রক্রিয়া। এটি আপনার কন্টেইনারাইজড অ্যাপ্লিকেশনগুলিকে স্কেল, ম্যানেজ এবং অর্কেস্ট্রেট করতে সহায়তা করে। নিচে এই প্রক্রিয়াটি ধাপে ধাপে ব্যাখ্যা করা হলো।

১. Kubernetes ক্লাস্টার প্রস্তুত করা

প্রথমত, নিশ্চিত করুন যে আপনার Kubernetes ক্লাস্টার প্রস্তুত এবং চলমান। আপনি মিনikube, k3s, বা অন্য কোন ক্লাউড ভিত্তিক Kubernetes পরিষেবা (যেমন Google Kubernetes Engine, Amazon EKS) ব্যবহার করতে পারেন।

২. Docker Image তৈরি করা

Docker Image তৈরি করতে, আপনার একটি Dockerfile এবং প্রয়োজনীয় ফাইল (যেমন requirements.txt, app.py) থাকতে হবে। আগের উত্তরে আলোচনা করা Dockerfile উদাহরণটি ব্যবহার করুন।

Docker Image তৈরি করুন

docker build -t myusername/my-app:latest .

৩. Docker Image Kubernetes Registry তে আপলোড করা

Kubernetes ক্লাস্টারে ডিপ্লয় করার আগে, আপনাকে Docker Image টি একটি রেজিস্ট্রিতে আপলোড করতে হবে (যেমন Docker Hub):

docker push myusername/my-app:latest

৪. Kubernetes Deployment ফাইল তৈরি করা

Kubernetes এ ডিপ্লয়মেন্ট করতে একটি YAML ফাইল তৈরি করুন। উদাহরণস্বরূপ, deployment.yaml নামক একটি ফাইল তৈরি করুন:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app-deployment
spec:
  replicas: 3  # সার্ভিসের কন্টেইনারের সংখ্যা
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-app
        image: myusername/my-app:latest
        ports:
        - containerPort: 5000  # আপনার অ্যাপ্লিকেশনের পোর্ট

৫. Deployment চালানো

Kubernetes CLI (kubectl) ব্যবহার করে ডিপ্লয়মেন্টটি তৈরি করতে নিম্নলিখিত কমান্ডটি চালান:

kubectl apply -f deployment.yaml

৬. সার্ভিস তৈরি করা

আপনার কন্টেইনার অ্যাপ্লিকেশনটি ক্লাস্টারের বাইরের ব্যবহারকারীদের কাছে অ্যাক্সেসযোগ্য করার জন্য একটি সার্ভিস তৈরি করুন। একটি নতুন YAML ফাইল তৈরি করুন, উদাহরণস্বরূপ, service.yaml:

apiVersion: v1
kind: Service
metadata:
  name: my-app-service
spec:
  type: LoadBalancer  # অথবা NodePort, ClusterIP
  selector:
    app: my-app
  ports:
    - protocol: TCP
      port: 80  # ক্লাস্টারের মধ্যে ব্যবহৃত পোর্ট
      targetPort: 5000  # কন্টেইনারের পোর্ট

৭. সার্ভিস চালানো

সার্ভিসটি তৈরি করতে নিম্নলিখিত কমান্ডটি চালান:

kubectl apply -f service.yaml

৮. ডিপ্লয়মেন্ট এবং সার্ভিস যাচাই করা

ডিপ্লয়মেন্ট এবং সার্ভিস যাচাই করতে নিচের কমান্ডগুলি ব্যবহার করুন:

kubectl get deployments
kubectl get services

৯. অ্যাপ্লিকেশন অ্যাক্সেস করা

আপনার সার্ভিসের IP বা DNS নামের মাধ্যমে আপনার অ্যাপ্লিকেশনটি ব্রাউজারে খুলুন। যদি আপনি LoadBalancer টাইপ ব্যবহার করে থাকেন, তবে এটি একটি পাবলিক IP প্রদান করবে। NodePort ব্যবহার করলে, আপনি ক্লাস্টারের নোডের IP এবং নির্দিষ্ট পোর্ট ব্যবহার করে অ্যাক্সেস করতে পারবেন।

সারসংক্ষেপ

এই প্রক্রিয়ার মাধ্যমে আপনি Kubernetes ক্লাস্টারে Docker কন্টেইনার সফলভাবে ডিপ্লয় করেছেন। Kubernetes আপনাকে ডিপ্লয়মেন্ট, স্কেলিং, এবং স্বয়ংক্রিয় পুনরুদ্ধারের সুবিধা প্রদান করে, যা আপনার কন্টেইনারাইজড অ্যাপ্লিকেশনগুলি পরিচালনা করতে সহায়তা করে।

Content added By
Promotion