Docker একটি শক্তিশালী টুল যা অ্যাপ্লিকেশন এবং এর নির্ভরশীলতা কন্টেইনারাইজ করে, যাতে সিস্টেমে একক পরিবেশে একাধিক অ্যাপ্লিকেশন চালানো সম্ভব হয়। Docker Compose একটি টুল যা ডকার কন্টেইনারগুলোর সমন্বয় করে একযোগে চালানোর সুযোগ দেয়। এটি বিশেষভাবে উপকারী যখন আপনি Flask অ্যাপ্লিকেশন এবং ডাটাবেসের মতো একাধিক সার্ভিস একসঙ্গে চালাতে চান।
এই গাইডে আমরা Flask এবং MySQL (বা যে কোনো ডাটাবেস) ইন্টিগ্রেট করব Docker Compose ব্যবহার করে। এতে আমরা Flask অ্যাপ্লিকেশন, ডাটাবেস এবং অন্যান্য নির্ভরশীলতা একটি Docker Compose ফাইলে সংজ্ঞায়িত করব।
১. প্রয়োজনীয়তা
- Docker এবং Docker Compose ইনস্টল করা থাকতে হবে।
- Flask অ্যাপ্লিকেশন এবং ডাটাবেসের জন্য
docker-compose.ymlফাইল তৈরি করতে হবে।
২. Dockerfile তৈরি করা
প্রথমে, একটি Dockerfile তৈরি করা হবে, যা Flask অ্যাপ্লিকেশনটি কিভাবে Docker কন্টেইনারে রান করবে তা নির্ধারণ করবে।
Dockerfile:
# Step 1: Use an official Python runtime as a parent image
FROM python:3.8-slim
# Step 2: Set the working directory in the container
WORKDIR /app
# Step 3: Copy the current directory contents into the container at /app
COPY . /app
# Step 4: Install any needed packages specified in requirements.txt
RUN pip install --no-cache-dir -r requirements.txt
# Step 5: Make port 5000 available to the world outside this container
EXPOSE 5000
# Step 6: Define environment variable
ENV FLASK_APP=app.py
ENV FLASK_RUN_HOST=0.0.0.0
# Step 7: Run the Flask application
CMD ["flask", "run"]
এখানে:
FROM python:3.8-slim: এটি Python 3.8 এর slim ভার্সন ভিত্তিক একটি কন্টেইনার ব্যবহার করছে।COPY . /app: বর্তমান ডিরেক্টরি থেকে সমস্ত ফাইল কন্টেইনারের/appডিরেক্টরিতে কপি করা হচ্ছে।RUN pip install -r requirements.txt: অ্যাপ্লিকেশনের নির্ভরশীলতা ইনস্টল করা হচ্ছে।
৩. requirements.txt ফাইল তৈরি করা
Flask এবং MySQL সংযোগের জন্য প্রয়োজনীয় প্যাকেজগুলো requirements.txt ফাইলে উল্লেখ করতে হবে।
requirements.txt:
Flask==2.0.1
Flask-MySQLdb==1.0.1
এখানে Flask-MySQLdb প্যাকেজটি Flask অ্যাপ্লিকেশনের সাথে MySQL ডাটাবেস সংযোগের জন্য ব্যবহৃত হয়।
৪. Flask অ্যাপ্লিকেশন তৈরি করা
এখন, Flask অ্যাপ্লিকেশন তৈরি করা হবে, যা MySQL ডাটাবেসের সাথে সংযোগ করবে এবং কিছু ডেটা ইনসার্ট এবং ফেচ করবে।
app.py:
from flask import Flask, jsonify
import MySQLdb
app = Flask(__name__)
# Database connection
def get_db_connection():
connection = MySQLdb.connect(
host='db', # The name of the service from Docker Compose
user='root',
password='example',
database='flaskdb'
)
return connection
@app.route('/')
def home():
return "Welcome to Flask with Docker and MySQL!"
@app.route('/users')
def get_users():
connection = get_db_connection()
cursor = connection.cursor()
cursor.execute('SELECT * FROM users')
users = cursor.fetchall()
cursor.close()
connection.close()
return jsonify(users)
if __name__ == "__main__":
app.run(debug=True)
এখানে:
get_db_connection(): MySQL ডাটাবেসে সংযোগ স্থাপন করার জন্য একটি ফাংশন।/usersরাউটটি ডাটাবেস থেকে ব্যবহারকারীদের তথ্য ফেচ করে JSON আকারে রিটার্ন করে।
৫. Docker Compose ফাইল তৈরি করা
এখন, Flask অ্যাপ্লিকেশন এবং MySQL ডাটাবেস সার্ভিস একসঙ্গে চালাতে docker-compose.yml ফাইল তৈরি করতে হবে।
docker-compose.yml:
version: '3'
services:
flask-app:
build: .
container_name: flask_app
ports:
- "5000:5000"
depends_on:
- db
environment:
- FLASK_APP=app.py
- FLASK_RUN_HOST=0.0.0.0
networks:
- flask-network
db:
image: mysql:5.7
container_name: db
environment:
MYSQL_ROOT_PASSWORD: example
MYSQL_DATABASE: flaskdb
MYSQL_USER: root
MYSQL_PASSWORD: example
ports:
- "3306:3306"
networks:
- flask-network
networks:
flask-network:
driver: bridge
এখানে:
flask-app: এটি Flask অ্যাপ্লিকেশনের জন্য সার্ভিস, যাDockerfileথেকে তৈরি হবে।db: এটি MySQL ডাটাবেসের জন্য সার্ভিস, যাmysql:5.7ইমেজ থেকে তৈরি হবে।MYSQL_ROOT_PASSWORDএবংMYSQL_DATABASEডাটাবেস সেট আপ করতে ব্যবহৃত হচ্ছে।depends_on: Flask অ্যাপ্লিকেশনটির জন্য নির্দিষ্ট করে দেয় যেdbসার্ভিসটি আগে চালু হবে।
৬. MySQL Database Schema তৈরি করা
MySQL ডাটাবেসে কিছু প্রাথমিক টেবিল তৈরি করা দরকার। আপনি MySQL CLI ব্যবহার করে বা Flask অ্যাপ্লিকেশনটির মাধ্যমে এটি করতে পারেন।
উদাহরণ: MySQL টেবিল তৈরি করা
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100)
);
INSERT INTO users (name, email) VALUES ('John Doe', 'john@example.com');
INSERT INTO users (name, email) VALUES ('Jane Doe', 'jane@example.com');
৭. Docker Compose ব্যবহার করে সার্ভিস চালানো
এখন docker-compose.yml ফাইল এবং অন্য সব ফাইল তৈরি করার পরে, আপনি নিচের কমান্ডটি ব্যবহার করে Flask অ্যাপ্লিকেশন এবং MySQL ডাটাবেস চালু করতে পারেন:
docker-compose up --build
এটি সমস্ত সার্ভিস (Flask এবং MySQL) চালু করবে এবং Flask অ্যাপ্লিকেশনটি http://127.0.0.1:5000 এ অ্যাক্সেসযোগ্য হবে।
৮. অ্যাপ্লিকেশন টেস্ট করা
- Flask অ্যাপ্লিকেশনটি
http://127.0.0.1:5000এ খুলুন। /usersরাউটে গিয়ে MySQL ডাটাবেসে সেভ করা ইউজারদের তথ্য দেখতে পারবেন:http://127.0.0.1:5000/users
Docker Compose ব্যবহার করে Flask অ্যাপ্লিকেশন এবং ডাটাবেসের ইন্টিগ্রেশন খুবই সহজ এবং সুবিধাজনক। আপনি Flask অ্যাপ্লিকেশন এবং ডাটাবেস সার্ভিস দুটি আলাদাভাবে কনফিগার করতে পারেন এবং Docker Compose এর মাধ্যমে একসঙ্গে চালাতে পারেন। এটি আপনার ডেভেলপমেন্ট প্রক্রিয়াকে দ্রুত এবং সাশ্রয়ী করে তোলে, কারণ সবকিছু এক কন্টেইনারাইজড পরিবেশে চলে।