Docker এবং কন্টেইনারাইজেশন সম্পর্কে আপনার দক্ষতা বাড়ানোর জন্য কিছু প্র্যাকটিস প্রোজেক্টের আইডিয়া নিচে দেওয়া হলো:
এই প্র্যাকটিস প্রোজেক্টগুলির মাধ্যমে আপনি Docker-এর কার্যকরী দিকগুলি শিখতে এবং বাস্তবে প্রয়োগ করতে পারবেন। প্রত্যেকটি প্রকল্প আপনাকে বাস্তব-জীবনের সমস্যাগুলি সমাধান করতে সাহায্য করবে এবং কন্টেইনারাইজেশন এবং ডকারের সাথে আপনার অভিজ্ঞতা বৃদ্ধি করবে।
Docker ব্যবহার করে একটি সিম্পল ওয়েব অ্যাপ্লিকেশন তৈরি করার প্রক্রিয়া নিচে আলোচনা করা হলো। এই উদাহরণে, আমরা একটি সহজ Flask (Python)-ভিত্তিক ওয়েব অ্যাপ্লিকেশন তৈরি করব এবং এটি Docker কন্টেইনারে চালাব।
প্রথমে নিশ্চিত করুন যে আপনার সিস্টেমে Docker ইনস্টল করা আছে। Docker ইনস্টল করতে হলে, অফিসিয়াল Docker ডকুমেন্টেশন অনুসরণ করুন।
প্রথমে একটি নতুন ডিরেক্টরি তৈরি করুন এবং সেখানে যান:
mkdir my-flask-app
cd my-flask-app
একটি ফাইল তৈরি করুন 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
নামে একটি নতুন ফাইল তৈরি করুন এবং নিচের কনটেন্টটি যোগ করুন:
# বেস ইমেজ হিসাবে 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"]
Dockerfile থেকে একটি Docker Image তৈরি করতে নিচের কমান্ডটি ব্যবহার করুন:
docker build -t my-flask-app .
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 এর মাধ্যমে আপনার অ্যাপ্লিকেশনটি পোর্টেবল এবং পুনঃব্যবহারযোগ্য হয়ে ওঠে।
Docker Compose ব্যবহার করে একটি Multi-container Application তৈরি করা একটি সহজ প্রক্রিয়া। নিচে একটি উদাহরণ দেওয়া হলো যেখানে আমরা একটি সিম্পল Flask ওয়েব অ্যাপ্লিকেশন তৈরি করব, যেটি MySQL ডাটাবেসের সাথে সংযুক্ত থাকবে।
প্রথমে নিশ্চিত করুন যে আপনার সিস্টেমে Docker এবং Docker Compose ইনস্টল করা আছে।
নতুন একটি ডিরেক্টরি তৈরি করুন এবং সেখানে যান:
mkdir my-flask-app
cd my-flask-app
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
নামে একটি নতুন ফাইল তৈরি করুন এবং নিচের কনটেন্টটি যোগ করুন:
# বেস ইমেজ হিসাবে 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.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 ফাইল তৈরি করার পর, নিচের কমান্ডটি ব্যবহার করে সব সার্ভিস চালান:
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 ফাইলের মাধ্যমে সার্ভিস এবং কনফিগারেশন পরিচালনা করা হয়েছে, যা আপনার অ্যাপ্লিকেশন ডেভেলপমেন্ট এবং ডিপ্লয়মেন্ট প্রক্রিয়াকে সহজতর করে।
নিজস্ব Docker Image তৈরি করা এবং সেটি Docker Hub এ আপলোড করা একটি সহজ প্রক্রিয়া। নিচে এই প্রক্রিয়াটি ধাপে ধাপে ব্যাখ্যা করা হলো।
একটি নতুন ফোল্ডার তৈরি করুন এবং সেখানে একটি 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')
টার্মিনাল/কমান্ড প্রম্পট খুলুন এবং Dockerfile থাকা ফোল্ডারে যান। এরপর নিচের কমান্ডটি ব্যবহার করুন:
docker build -t myusername/my-app:latest .
এখানে:
myusername/my-app:latest
হল আপনার Docker Image এর নাম এবং ট্যাগ।আপনার Docker Hub অ্যাকাউন্টে লগইন করতে নিচের কমান্ডটি ব্যবহার করুন:
docker login
এটি আপনার Docker Hub ইউজারনেম এবং পাসওয়ার্ড চাইবে।
Docker Hub এ ইমেজটি আপলোড করতে নিচের কমান্ডটি ব্যবহার করুন:
docker push myusername/my-app:latest
এখানে myusername/my-app:latest
হল আপনার ট্যাগকৃত Docker Image নাম।
Docker Hub থেকে আপনার ইমেজটি ডাউনলোড করতে (পুল) নিচের কমান্ডটি ব্যবহার করুন:
docker pull myusername/my-app:latest
এই প্রক্রিয়ার মাধ্যমে আপনি একটি কাস্টম Docker Image তৈরি করেছেন এবং সেটি Docker Hub এ আপলোড করেছেন। Docker Hub এ আপলোড করা ইমেজগুলি শেয়ার এবং পুনঃব্যবহার করা সহজ করে, যা ডেভেলপমেন্ট এবং ডিপ্লয়মেন্টের সময় সুবিধা প্রদান করে। Docker ব্যবহার করে কন্টেইনারাইজড অ্যাপ্লিকেশনগুলির কার্যকারিতা এবং পোর্টেবিলিটি বৃদ্ধি পায়।
Kubernetes ক্লাস্টারে Docker কন্টেইনার ডিপ্লয় করা একটি সাধারণ এবং কার্যকরী প্রক্রিয়া। এটি আপনার কন্টেইনারাইজড অ্যাপ্লিকেশনগুলিকে স্কেল, ম্যানেজ এবং অর্কেস্ট্রেট করতে সহায়তা করে। নিচে এই প্রক্রিয়াটি ধাপে ধাপে ব্যাখ্যা করা হলো।
প্রথমত, নিশ্চিত করুন যে আপনার Kubernetes ক্লাস্টার প্রস্তুত এবং চলমান। আপনি মিনikube, k3s, বা অন্য কোন ক্লাউড ভিত্তিক Kubernetes পরিষেবা (যেমন Google Kubernetes Engine, Amazon EKS) ব্যবহার করতে পারেন।
Docker Image তৈরি করতে, আপনার একটি Dockerfile
এবং প্রয়োজনীয় ফাইল (যেমন requirements.txt
, app.py
) থাকতে হবে। আগের উত্তরে আলোচনা করা Dockerfile
উদাহরণটি ব্যবহার করুন।
docker build -t myusername/my-app:latest .
Kubernetes ক্লাস্টারে ডিপ্লয় করার আগে, আপনাকে Docker Image টি একটি রেজিস্ট্রিতে আপলোড করতে হবে (যেমন Docker Hub):
docker push myusername/my-app:latest
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 # আপনার অ্যাপ্লিকেশনের পোর্ট
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 আপনাকে ডিপ্লয়মেন্ট, স্কেলিং, এবং স্বয়ংক্রিয় পুনরুদ্ধারের সুবিধা প্রদান করে, যা আপনার কন্টেইনারাইজড অ্যাপ্লিকেশনগুলি পরিচালনা করতে সহায়তা করে।