Skill

Flask এবং Docker Integration

ফ্লাস্ক (Flask) - Web Development

338

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

এই টিউটোরিয়ালে Flask এবং Docker ইন্টিগ্রেশনের মাধ্যমে একটি Flask অ্যাপ্লিকেশনকে Docker কনটেইনারে রান করানোর পদ্ধতি দেখানো হবে।


১. Docker কী?

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


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

প্রথমে, একটি সাধারণ Flask অ্যাপ্লিকেশন তৈরি করা হবে।

Flask অ্যাপ্লিকেশন কোড

app.py:

from flask import Flask

app = Flask(__name__)

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

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

এখানে:

  • host='0.0.0.0': এটি Flask অ্যাপ্লিকেশনটিকে সব IP ঠিকানায় শোনা (listening) করার জন্য কনফিগার করে, যেহেতু Docker কনটেইনারের মধ্যে রান করছে।
  • port=5000: Flask ডিফল্টভাবে 5000 পোর্টে রান হয়।

৩. Dockerfile তৈরি করা

Docker কনটেইনারে Flask অ্যাপ্লিকেশনটি রান করার জন্য Dockerfile তৈরি করতে হবে। Dockerfile একটি ইনস্ট্রাকশন ফাইল যা Docker কনটেইনার তৈরি করতে প্রয়োজনীয় নির্দেশনা ধারণ করে।

Dockerfile

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

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

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

# ডিপেনডেন্সি ইনস্টল করা
RUN pip install -r requirements.txt

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

# Flask অ্যাপ্লিকেশন চালানো
CMD ["python", "app.py"]

এখানে:

  • FROM python:3.9-slim: এটি Python 3.9 স্লিম ইমেজকে বেস হিসেবে ব্যবহার করে।
  • WORKDIR /app: Docker কনটেইনারের মধ্যে /app নামক একটি ডিরেক্টরি সেট করা হয়েছে যা আমাদের Flask অ্যাপ্লিকেশনের কাজের ডিরেক্টরি হবে।
  • COPY requirements.txt requirements.txt: Flask অ্যাপ্লিকেশনের প্যাকেজ ডিপেনডেন্সি ইনস্টল করার জন্য requirements.txt ফাইল কপি করা হচ্ছে।
  • RUN pip install -r requirements.txt: requirements.txt থেকে Flask অ্যাপ্লিকেশনের ডিপেনডেন্সি ইনস্টল করা হচ্ছে।
  • CMD ["python", "app.py"]: Flask অ্যাপ্লিকেশন রান করার জন্য কমান্ড সেট করা হচ্ছে।

৪. requirements.txt তৈরি করা

Flask অ্যাপ্লিকেশনের সমস্ত ডিপেনডেন্সি requirements.txt ফাইলে রাখতে হবে।

requirements.txt

Flask==2.0.2

এখানে শুধু Flask ডিপেনডেন্সি উল্লেখ করা হয়েছে, তবে আপনার অ্যাপ্লিকেশনে যেকোনো অন্যান্য প্যাকেজ থাকলে সেগুলোও এই ফাইলে অন্তর্ভুক্ত করতে হবে।


৫. Docker Image তৈরি করা

এখন, Flask অ্যাপ্লিকেশনকে Docker কনটেইনারে রান করার জন্য Docker ইমেজ তৈরি করতে হবে।

ধাপ ১: Docker ইমেজ বিল্ড করা

docker build -t flask-docker-app .

এখানে:

  • -t flask-docker-app: এই আর্গুমেন্টটি ইমেজের নাম সেট করে। আপনি আপনার ইমেজের নাম পরিবর্তন করতে পারেন।
  • .: Dockerfile যেখানে অবস্থিত, সেই ডিরেক্টরি। বর্তমান ডিরেক্টরি নির্দেশ করছে।

ধাপ ২: Docker ইমেজ চেক করা

docker images

এটি আপনার তৈরি করা Docker ইমেজ দেখাবে।


৬. Docker কনটেইনার রান করা

ডকার কনটেইনারে Flask অ্যাপ্লিকেশনটি রান করতে নিচের কমান্ডটি ব্যবহার করুন:

docker run -p 5000:5000 flask-docker-app

এখানে:

  • -p 5000:5000: এটি কনটেইনারের 5000 পোর্টকে আপনার লোকাল মেশিনের 5000 পোর্টে ম্যাপ করবে, যাতে আপনি ওয়েব ব্রাউজারে http://localhost:5000 গিয়ে অ্যাপটি দেখতে পারেন।

৭. Docker Compose ব্যবহার করে Flask অ্যাপ্লিকেশন

যদি আপনার অ্যাপ্লিকেশনটি আরও জটিল হয় এবং ডাটাবেস বা অন্যান্য সার্ভিস দরকার হয়, তবে Docker Compose ব্যবহার করে একাধিক কনটেইনার একসাথে চালানো যেতে পারে।

docker-compose.yml ফাইল তৈরি করা

version: '3.8'

services:
  flask:
    build: .
    ports:
      - "5000:5000"
    environment:
      - FLASK_ENV=development

এখানে:

  • build: .: এটি বর্তমান ডিরেক্টরি থেকে Dockerfile ইমেজ তৈরি করবে।
  • ports: "5000:5000": এটি কনটেইনারের পোর্ট 5000 কে হোস্ট মেশিনের পোর্ট 5000 এর সাথে সংযুক্ত করবে।

Docker Compose কমান্ড দিয়ে Flask অ্যাপ চালানো

docker-compose up --build

এটি Docker Compose এর মাধ্যমে Flask অ্যাপ্লিকেশন চালাবে।


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

Dockerized Flask অ্যাপ্লিকেশনটি এখন ওয়েব ব্রাউজারে বা curl কমান্ড দিয়ে পরীক্ষা করা যেতে পারে।

curl http://localhost:5000

এটি "Hello, Docker!" মেসেজ রিটার্ন করবে।


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

Content added By

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


১. Docker কী এবং কেন Flask অ্যাপ ডিপ্লয় করার জন্য ব্যবহার করা হয়?

Docker একটি ওপেন সোর্স প্ল্যাটফর্ম যা কনটেইনারাইজেশন ব্যবস্থাপনার মাধ্যমে অ্যাপ্লিকেশন এবং তার ডিপেনডেন্সি গুলোকে একত্রিত করে এবং একে অপরের থেকে বিচ্ছিন্নভাবে পরিচালনা করতে সক্ষম করে। Docker একটি অ্যাপ্লিকেশন এবং তার সমস্ত ডিপেনডেন্সি (যেমন, লাইব্রেরি, কনফিগারেশন, ফাইল ইত্যাদি) নিয়ে একটি কনটেইনার তৈরি করে, যা যেকোনো পরিবেশে চালানো যায়। Docker আপনার Flask অ্যাপ্লিকেশন এবং এর ডিপেনডেন্সি গুলোকে কনটেইনারের মধ্যে পুরোপুরি সুরক্ষিত রাখে।


২. Flask অ্যাপ ডিপ্লয়মেন্টের জন্য Dockerized ফ্লো

Dockerized Flask অ্যাপ ডিপ্লয় করার জন্য কিছু স্টেপ অনুসরণ করতে হয়:

  1. Flask অ্যাপ তৈরি করা
  2. Dockerfile তৈরি করা
  3. Docker ইমেজ তৈরি করা
  4. Docker কনটেইনার রান করা
  5. Docker Compose (ঐচ্ছিক) ব্যবহার করা

৩. Flask অ্যাপ তৈরি করা

প্রথমে একটি সাধারণ Flask অ্যাপ তৈরি করি।

app.py:

from flask import Flask

app = Flask(__name__)

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

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

এখানে:

  • host="0.0.0.0": এটি Flask অ্যাপ্লিকেশনটি সমস্ত IP ঠিকানায় শোনার জন্য কনফিগার করে, কারণ Docker কনটেইনারের মধ্যে রান হচ্ছে।
  • port=5000: Flask ডিফল্টভাবে 5000 পোর্টে রান হয়।

৪. Dockerfile তৈরি করা

Docker কনটেইনারের মধ্যে Flask অ্যাপটি রান করার জন্য একটি Dockerfile তৈরি করতে হবে।

Dockerfile:

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

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

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

# ডিপেনডেন্সি ইনস্টল করা
RUN pip install --no-cache-dir -r requirements.txt

# অ্যাপ কপি করা
COPY . .

# Flask অ্যাপ চালানো
CMD ["python", "app.py"]

এখানে:

  • FROM python:3.9-slim: এটি Python 3.9 এর একটি স্লিম বেস ইমেজ ব্যবহার করছে।
  • WORKDIR /app: এটি /app নামক ডিরেক্টরি তৈরি করবে যেখানে Flask অ্যাপ থাকবে।
  • COPY requirements.txt requirements.txt: requirements.txt ফাইল কপি করে Flask অ্যাপের সমস্ত ডিপেনডেন্সি ইনস্টল করার জন্য।
  • RUN pip install -r requirements.txt: Flask অ্যাপের ডিপেনডেন্সি ইনস্টল করা।
  • CMD ["python", "app.py"]: Flask অ্যাপ চালানোর কমান্ড।

৫. requirements.txt তৈরি করা

Flask অ্যাপের সমস্ত প্যাকেজ ডিপেনডেন্সি requirements.txt ফাইলে রাখতে হবে।

requirements.txt:

Flask==2.0.2

এখানে:

  • Flask==2.0.2: Flask এর নির্দিষ্ট ভার্সন উল্লেখ করা হয়েছে। আপনার অ্যাপের ডিপেনডেন্সি অনুসারে অন্যান্য লাইব্রেরি যোগ করতে পারেন।

৬. Docker ইমেজ তৈরি করা

এখন Flask অ্যাপ্লিকেশনটি Docker কনটেইনারে রান করার জন্য Docker ইমেজ তৈরি করতে হবে। Dockerfile থাকার কারণে আমরা ইমেজ তৈরি করতে পারব।

ধাপ ১: Docker ইমেজ বিল্ড করা

docker build -t flask-docker-app .

এখানে:

  • -t flask-docker-app: ইমেজের নাম প্রদান করা হচ্ছে।
  • .: Dockerfile যেখানে অবস্থিত, সেই ডিরেক্টরি নির্দেশ করছে।

ধাপ ২: Docker ইমেজ চেক করা

docker images

এটি আপনার তৈরি করা Docker ইমেজ দেখাবে।


৭. Docker কনটেইনার রান করা

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

docker run -p 5000:5000 flask-docker-app

এখানে:

  • -p 5000:5000: এটি কনটেইনারের 5000 পোর্টকে হোস্ট মেশিনের 5000 পোর্টের সাথে সংযুক্ত করবে, যাতে আপনি ওয়েব ব্রাউজারে http://localhost:5000 গিয়ে অ্যাপটি দেখতে পারেন।

কনটেইনার রান হওয়ার পর:

এখন আপনি http://localhost:5000 ব্রাউজারে গিয়ে Flask অ্যাপ দেখতে পাবেন।


৮. Docker Compose ব্যবহার (ঐচ্ছিক)

যদি আপনার অ্যাপ্লিকেশনটি আরও জটিল হয় এবং ডাটাবেস বা অন্যান্য সার্ভিস দরকার হয়, তাহলে Docker Compose ব্যবহার করে একাধিক কনটেইনার একসাথে চালানো যেতে পারে।

docker-compose.yml ফাইল তৈরি করা

version: '3.8'

services:
  flask:
    build: .
    ports:
      - "5000:5000"
    environment:
      - FLASK_ENV=development

এখানে:

  • build: .: এটি Dockerfile এর মাধ্যমে Flask অ্যাপ ইমেজ তৈরি করবে।
  • ports: "5000:5000": এটি কনটেইনারের পোর্ট 5000 কে হোস্ট মেশিনের পোর্ট 5000 এর সাথে সংযুক্ত করবে।

Docker Compose কমান্ড দিয়ে Flask অ্যাপ চালানো

docker-compose up --build

এটি Docker Compose এর মাধ্যমে Flask অ্যাপ্লিকেশন চালাবে।


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

Dockerized Flask অ্যাপ্লিকেশনটি এখন ওয়েব ব্রাউজারে বা curl কমান্ড দিয়ে পরীক্ষা করা যেতে পারে।

curl http://localhost:5000

এটি "Hello, Docker World!" মেসেজ রিটার্ন করবে।


Flask এবং Docker Integration একটি শক্তিশালী পদ্ধতি যা Flask অ্যাপ্লিকেশন এবং তার সমস্ত ডিপেনডেন্সি গুলোকে একটি কনটেইনারের মধ্যে পৃথকভাবে পরিচালনা করতে সক্ষম করে। Docker ব্যবহার করে, আপনি আপনার Flask অ্যাপ্লিকেশনটিকে যে কোন পরিবেশে নির্ভরযোগ্যভাবে ডিপ্লয় এবং পরিচালনা করতে পারেন। Dockerized Flask অ্যাপ্লিকেশনটি উন্নত পারফরম্যান্স এবং স্কেলেবিলিটি প্রদান করে, কারণ এটি একক কনটেইনারে ডিপ্লয় করা হয় এবং পরিবেশের সাথে একীভূত থাকে।

Content added By

Docker হলো একটি ওপেন সোর্স প্ল্যাটফর্ম যা অ্যাপ্লিকেশন এবং তার নির্ভরশীলতা একটি কন্টেইনারে প্যাকেজ করে, যাতে এটি যেকোনো পরিবেশে সঠিকভাবে কাজ করে। Flask অ্যাপ্লিকেশনকে Docker কন্টেইনারে চালানোর মাধ্যমে, আপনি আপনার অ্যাপ্লিকেশনকে স্থানীয় এবং প্রোডাকশন পরিবেশে সহজে ডিপ্লয় করতে পারেন।

এই গাইডে, Flask অ্যাপ্লিকেশনের জন্য একটি Dockerfile তৈরি এবং কনফিগার করার প্রক্রিয়া দেখানো হবে।


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

প্রথমে একটি সাধারণ Flask অ্যাপ্লিকেশন তৈরি করুন। এখানে একটি app.py ফাইল উদাহরণ দেওয়া হল:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'স্বাগতম Flask অ্যাপে!'

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

এখানে:

  • app.run(debug=True, host='0.0.0.0'): এটি অ্যাপ্লিকেশনকে সব IP ঠিকানা থেকে এক্সেসযোগ্য করে তোলে। Docker কন্টেইনারের মধ্যে Flask অ্যাপ্লিকেশন চলবে, তাই host='0.0.0.0' ব্যবহার করা হয় যাতে কন্টেইনারের বাহির থেকেও অ্যাপ্লিকেশন এক্সেস করা যায়।

২. Dockerfile তৈরি করা

এখন Flask অ্যাপ্লিকেশনকে Docker কন্টেইনারে চালানোর জন্য একটি Dockerfile তৈরি করতে হবে। এটি একটি টেক্সট ফাইল হবে যা Docker কন্টেইনারের জন্য স্টেপ-by-স্টেপ ইনস্ট্রাকশন দেয়।

Dockerfile:

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

# ২. অ্যাপ্লিকেশনের জন্য একটি ডিরেক্টরি তৈরি করা
WORKDIR /app

# ৩. প্রয়োজনীয় প্যাকেজগুলোর লিস্ট কপি করা
COPY requirements.txt .

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

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

# ৬. Flask অ্যাপ চালানোর জন্য পোর্ট নির্ধারণ
EXPOSE 5000

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

ব্যাখ্যা:

  1. FROM python:3.9-slim: আমরা python:3.9-slim ডকার ইমেজ ব্যবহার করছি যা ছোট আকারের এবং Python 3.9 ভার্সন আছে।
  2. WORKDIR /app: এটি কন্টেইনারের ভিতরে /app ডিরেক্টরি তৈরি করে এবং সেই ডিরেক্টরিকে ওয়ার্কিং ডিরেক্টরি হিসেবে সেট করে।
  3. COPY requirements.txt .: requirements.txt ফাইলটি কন্টেইনারে কপি করা হচ্ছে। এই ফাইলটি আমাদের Flask অ্যাপ্লিকেশনের প্রয়োজনীয় প্যাকেজগুলির তালিকা ধারণ করে।
  4. RUN pip install --no-cache-dir -r requirements.txt: প্রয়োজনীয় প্যাকেজগুলি কন্টেইনারে ইনস্টল করা হচ্ছে।
  5. COPY . .: বর্তমান লোকাল ডিরেক্টরি (এটি যেখানে Dockerfile রয়েছে) থেকে সমস্ত ফাইল কন্টেইনারে কপি করা হচ্ছে।
  6. EXPOSE 5000: Flask অ্যাপ্লিকেশন সাধারণত পোর্ট 5000 এ চলে, তাই কন্টেইনারে এই পোর্ট এক্সপোজ করা হচ্ছে।
  7. CMD ["python", "app.py"]: Flask অ্যাপ্লিকেশন চালানোর জন্য কমান্ড দেওয়া হচ্ছে।

৩. requirements.txt তৈরি করা

আপনি যদি Flask অ্যাপ্লিকেশন পরিচালনা করতে চান, তবে এর জন্য কিছু নির্ভরশীলতা থাকতে হবে, যেমন Flask। একটি requirements.txt ফাইল তৈরি করুন, যাতে সমস্ত প্যাকেজের তালিকা থাকবে:

requirements.txt:

Flask==2.0.1

এটি Flask অ্যাপ্লিকেশনের জন্য নির্দিষ্ট সংস্করণ যুক্ত করেছে। আপনি যদি অন্যান্য প্যাকেজ ব্যবহার করেন, তবে সেগুলোও এখানে যোগ করতে হবে।


৪. Docker Image তৈরি করা

Dockerfile তৈরি করার পর, এখন আপনি Docker ইমেজ তৈরি করতে পারবেন।

  1. প্রথমে আপনার প্রজেক্টের ডিরেক্টরিতে যান যেখানে Dockerfile এবং requirements.txt রয়েছে।
  2. Docker ইমেজ তৈরি করার জন্য নিম্নলিখিত কমান্ডটি চালান:
docker build -t flask-app .

এখানে:

  • -t flask-app: এটি ইমেজের নাম flask-app হিসেবে সেট করে।

৫. Docker Container চালানো

Docker ইমেজ তৈরি করার পর, এখন আপনি কন্টেইনার চালাতে পারেন।

docker run -p 5000:5000 flask-app

এখানে:

  • -p 5000:5000: এটি কন্টেইনারের পোর্ট 5000 কে লোকাল মেশিনের পোর্ট 5000 এর সাথে ম্যাপ করে, যাতে আপনি http://localhost:5000 ঠিকানায় Flask অ্যাপ এক্সেস করতে পারেন।

৬. Docker কন্টেইনারের অবস্থা চেক করা

আপনি কন্টেইনার চালু হওয়ার পর এটি চেক করতে পারেন:

docker ps

এটি সমস্ত চলমান Docker কন্টেইনারের তালিকা দেখাবে।


৭. Docker কন্টেইনার বন্ধ করা

যদি আপনি কন্টেইনার বন্ধ করতে চান, তাহলে নিচের কমান্ডটি ব্যবহার করুন:

docker stop <container_id>

এখানে <container_id> হল কন্টেইনারের আইডি, যা আপনি docker ps কমান্ডের মাধ্যমে পেতে পারবেন।


এখন আপনি Flask অ্যাপ্লিকেশন Docker কন্টেইনারে রান করতে প্রস্তুত। Dockerfile এবং requirements.txt ফাইল তৈরি করে এবং Flask অ্যাপ কনফিগার করে আপনি আপনার অ্যাপ্লিকেশনটি যেকোনো পরিবেশে ডিপ্লয় করতে পারবেন, এবং এতে পারফরম্যান্স এবং স্কেলেবিলিটি বাড়ানোর সুবিধা পাওয়া যাবে। Docker কন্টেইনার ব্যবহার করে Flask অ্যাপ্লিকেশন পরিচালনা করা নিরাপদ, সহজ, এবং আরও কার্যকরী।

Content added By

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...