FastAPI এর Production Ready Docker Image তৈরি

Web Development - ফাস্টএপিআই (FastAPI) - FastAPI এবং Docker Integration
259

FastAPI অ্যাপ্লিকেশনকে একটি Production Ready Docker Image হিসেবে তৈরি করা একটি সাধারণ এবং কার্যকরী প্রক্রিয়া। Docker ব্যবহার করে আপনি অ্যাপ্লিকেশনকে সহজে বিভিন্ন পরিবেশে ডিপ্লয় (deploy) করতে পারবেন, এবং এটি স্কেলেবিলিটি, পোর্টেবলিটি এবং নিরাপত্তা বৃদ্ধি করবে।

এখানে আমরা FastAPI অ্যাপ্লিকেশনটি Docker কনটেইনারে রান করার জন্য কনফিগার করব এবং একটি Production Ready Docker Image তৈরি করব।


Step 1: FastAPI অ্যাপ তৈরি করা

প্রথমে একটি সাধারণ FastAPI অ্যাপ তৈরি করুন। উদাহরণস্বরূপ, আমরা একটি ছোট অ্যাপ তৈরি করছি যা / রুট এ একটি JSON রেসপন্স ফেরত দেয়।

main.py ফাইল (FastAPI অ্যাপ)

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello, FastAPI in Docker!"}

এটি একটি সাধারণ FastAPI অ্যাপ্লিকেশন যেখানে একটি রুট রয়েছে যা একটি সিম্পল JSON রেসপন্স ফিরিয়ে দেয়।


Step 2: Dockerfile তৈরি করা

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

Dockerfile

# Step 1: Use a lightweight official Python image
FROM python:3.9-slim

# Step 2: Set the working directory in the container
WORKDIR /app

# Step 3: Copy the dependencies and FastAPI app into the container
COPY requirements.txt /app/
COPY . /app/

# Step 4: Install dependencies
RUN pip install --no-cache-dir -r requirements.txt

# Step 5: Expose the port FastAPI app will run on
EXPOSE 8000

# Step 6: Define the command to run the application using Uvicorn
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000", "--reload"]

ব্যাখ্যা:

  • FROM python:3.9-slim: Python 3.9 এর একটি স্লিম ভার্সন বেস ইমেজ ব্যবহার করা হয়েছে, যেটি প্রডাকশন পরিবেশে ছোট এবং দ্রুত।
  • WORKDIR /app: কনটেইনারের মধ্যে /app ডিরেক্টরি সেট করা হয়েছে যাতে কোড ও ডিপেনডেন্সি ইনস্টল করা হয়।
  • COPY requirements.txt /app/: requirements.txt ফাইল কনটেইনারে কপি করা হচ্ছে।
  • RUN pip install --no-cache-dir -r requirements.txt: ডিপেনডেন্সি ইনস্টল করা হচ্ছে।
  • EXPOSE 8000: FastAPI অ্যাপ্লিকেশন 8000 পোর্টে রান করবে, তাই এই পোর্টটি খুলে দেওয়া হয়েছে।
  • CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000", "--reload"]: uvicorn দিয়ে FastAPI অ্যাপ চালানোর জন্য কমান্ড দেয়া হয়েছে।

Step 3: requirements.txt ফাইল তৈরি করা

FastAPI এবং প্রয়োজনীয় লাইব্রেরি ইনস্টল করতে requirements.txt ফাইল তৈরি করুন। এই ফাইলটি Docker কনটেইনারের মধ্যে পাঠানো হবে যাতে অ্যাপ্লিকেশনটি চলার জন্য প্রয়োজনীয় প্যাকেজগুলি ইনস্টল করা যায়।

requirements.txt

fastapi
uvicorn[gunicorn]

এখানে:

  • fastapi: FastAPI ফ্রেমওয়ার্ক।
  • uvicorn: FastAPI অ্যাপ্লিকেশন চালানোর জন্য ASGI সার্ভার।

Step 4: Docker Image তৈরি করা

এখন, Dockerfile এবং অন্যান্য ফাইলগুলি আপনার প্রোজেক্ট ফোল্ডারে থাকার পরে, ডকার ইমেজ তৈরি করতে হবে।

Docker ইমেজ তৈরি করার কমান্ড:

docker build -t fastapi-app .

এই কমান্ডটি আপনার বর্তমান ডিরেক্টরি থেকে Dockerfile পড়বে এবং একটি Docker ইমেজ fastapi-app নামে তৈরি করবে।


Step 5: Docker Container চালানো

Docker ইমেজ তৈরি হওয়ার পরে, সেই ইমেজ থেকে একটি কনটেইনার রান করা যাবে।

কনটেইনার রান করার কমান্ড:

docker run -d --name fastapi-container -p 8000:8000 fastapi-app

এখানে:

  • -d: কনটেইনারটিকে ব্যাকগ্রাউন্ডে রান করবে।
  • --name fastapi-container: কনটেইনারের নাম fastapi-container রাখবে।
  • -p 8000:8000: কনটেইনারের পোর্ট 8000 কে আপনার লোকাল মেশিনের পোর্ট 8000 এর সাথে ম্যাপ করবে।
  • fastapi-app: কনটেইনার রান করার জন্য তৈরি করা Docker ইমেজ।

Step 6: Dockerized FastAPI অ্যাপ্লিকেশন পরীক্ষা করা

এখন, আপনি আপনার ব্রাউজারে গিয়ে http://localhost:8000 URL এ যেতে পারেন এবং আপনার FastAPI অ্যাপটি দেখতে পাবেন।

উদাহরণ রেসপন্স:

{
  "message": "Hello, FastAPI in Docker!"
}

এটি নির্দেশ করে যে আপনার FastAPI অ্যাপ সফলভাবে Docker কনটেইনারে রান হচ্ছে।


Step 7: Dockerized FastAPI অ্যাপ্লিকেশন স্কেলিং

প্রোডাকশন পরিবেশে আপনার FastAPI অ্যাপ্লিকেশন স্কেল করতে চাইলে, Docker Compose এবং Gunicorn ব্যবহার করে একাধিক কনটেইনার চালানো যেতে পারে।

উদাহরণ: docker-compose.yml

version: "3.9"
services:
  app:
    image: fastapi-app
    ports:
      - "8000:8000"
    deploy:
      replicas: 3
      resources:
        limits:
          cpus: "0.5"
          memory: 512M
      restart_policy:
        condition: on-failure

এখানে:

  • replicas: 3: ৩টি কনটেইনারের প্রপ্লিকা চালানোর জন্য।
  • resources: প্রতি কনটেইনারের জন্য CPU এবং মেমরি সীমা নির্ধারণ করা হয়েছে।

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

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...