Docker Compose ব্যবহার করে Flask এবং Database ইন্টিগ্রেশন

Flask এবং Docker Integration - ফ্লাস্ক (Flask) - Web Development

239

Docker একটি শক্তিশালী টুল যা অ্যাপ্লিকেশন এবং এর নির্ভরশীলতা কন্টেইনারাইজ করে, যাতে সিস্টেমে একক পরিবেশে একাধিক অ্যাপ্লিকেশন চালানো সম্ভব হয়। Docker Compose একটি টুল যা ডকার কন্টেইনারগুলোর সমন্বয় করে একযোগে চালানোর সুযোগ দেয়। এটি বিশেষভাবে উপকারী যখন আপনি Flask অ্যাপ্লিকেশন এবং ডাটাবেসের মতো একাধিক সার্ভিস একসঙ্গে চালাতে চান।

এই গাইডে আমরা Flask এবং MySQL (বা যে কোনো ডাটাবেস) ইন্টিগ্রেট করব Docker Compose ব্যবহার করে। এতে আমরা Flask অ্যাপ্লিকেশন, ডাটাবেস এবং অন্যান্য নির্ভরশীলতা একটি Docker Compose ফাইলে সংজ্ঞায়িত করব।


১. প্রয়োজনীয়তা

  1. Docker এবং Docker Compose ইনস্টল করা থাকতে হবে।
  2. 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 এ অ্যাক্সেসযোগ্য হবে।


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

  1. Flask অ্যাপ্লিকেশনটি http://127.0.0.1:5000 এ খুলুন।
  2. /users রাউটে গিয়ে MySQL ডাটাবেসে সেভ করা ইউজারদের তথ্য দেখতে পারবেন:

    http://127.0.0.1:5000/users
    

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

Content added By
Promotion

Are you sure to start over?

Loading...