Web Development FastAPI এবং Docker Integration গাইড ও নোট

341

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

এখানে, আমরা দেখব কিভাবে FastAPI অ্যাপ্লিকেশনকে Docker কনটেইনারে প্যাকেজ এবং রান করা যায়।


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

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

উদাহরণ: app.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"message": "Hello, FastAPI!"}

এখানে একটি সাধারণ FastAPI অ্যাপ তৈরি করা হয়েছে, যেখানে / রুট এন্ডপয়েন্টে একটি "Hello, FastAPI!" মেসেজ রিটার্ন করা হচ্ছে।


Step 2: Dockerfile তৈরি করা

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

উদাহরণ: Dockerfile

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

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

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

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

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

# FastAPI অ্যাপ চালানোর জন্য Uvicorn ব্যবহার করা
CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "80"]

Dockerfile ব্যাখ্যা:

  • FROM python:3.9-slim: এটি একটি পাইটন ৩.৯ স্লিম ইমেজ থেকে শুরু হয়।
  • WORKDIR /app: এটি কন্টেইনারে /app ডিরেক্টরি তৈরি করে যেখানে অ্যাপ থাকবে।
  • COPY requirements.txt /app/: requirements.txt ফাইল কনটেইনারে কপি করা হয়।
  • RUN pip install --no-cache-dir -r requirements.txt: প্রয়োজনীয় প্যাকেজগুলো ইনস্টল করা হয়।
  • COPY . /app/: অ্যাপের সব ফাইল কনটেইনারে কপি করা হয়।
  • CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "80"]: এটি Uvicorn দিয়ে FastAPI অ্যাপ চালানোর কমান্ড।

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

FastAPI এবং অন্যান্য প্রয়োজনীয় প্যাকেজের নির্ভরতাগুলি একটি requirements.txt ফাইলে উল্লেখ করা হয়।

উদাহরণ: requirements.txt

fastapi
uvicorn

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

এখন Dockerfile এবং অ্যাপের অন্যান্য ফাইলগুলো তৈরি হওয়ার পর, Docker ইমেজ তৈরি করার জন্য নিচের কমান্ডটি রান করুন:

docker build -t fastapi-app .

এখানে:

  • -t fastapi-app: Docker ইমেজটির নাম fastapi-app রাখা হবে।
  • .: Dockerfile যেখানে অবস্থিত, সেটি নির্দেশ করে।

Docker ইমেজ তৈরি হওয়ার পর, আপনি fastapi-app নামক একটি ইমেজ পাবেন।


Step 5: Docker Container চালানো

Docker ইমেজ তৈরি হওয়ার পরে, কনটেইনার চালানোর জন্য নিচের কমান্ডটি ব্যবহার করুন:

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

এখানে:

  • -d: কনটেইনারটি ব্যাকগ্রাউন্ডে চালাতে ব্যবহার করা হয়।
  • --name fastapi-container: কনটেইনারের নাম দেয়া হয় fastapi-container
  • -p 8000:80: কনটেইনারের পোর্ট 80 কে হোস্ট মেশিনের পোর্ট 8000 এ ম্যাপ করে।
  • fastapi-app: চলতি Docker ইমেজটির নাম।

Step 6: Web Browser-এ FastAPI অ্যাপ পরীক্ষা করা

এখন আপনার FastAPI অ্যাপ Docker কনটেইনারে চলছে। আপনি http://127.0.0.1:8000 এ ব্রাউজারে গিয়ে এটি পরীক্ষা করতে পারবেন।

এছাড়াও, FastAPI তে স্বয়ংক্রিয় ডকুমেন্টেশন দেখতে পারবেন:


Step 7: Docker Container স্টপ এবং রিমুভ করা

যদি কনটেইনার বন্ধ করতে চান:

docker stop fastapi-container

এবং কনটেইনারটি মুছে ফেলতে:

docker rm fastapi-container

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

Content added By

Docker এর মাধ্যমে FastAPI ডিপ্লয়মেন্ট

280

Docker একটি ওপেন সোর্স প্ল্যাটফর্ম যা ডেভেলপারদের অ্যাপ্লিকেশন এবং তাদের ডিপেনডেন্সি একত্রে প্যাকেজ করতে সাহায্য করে। Docker এর মাধ্যমে আপনি আপনার FastAPI অ্যাপ্লিকেশনকে একটি কনটেইনারে রান করতে পারেন, যা সহজে যে কোনো পরিবেশে (local, staging, production) ডিপ্লয় করা যায়।

এখানে আমরা দেখব কিভাবে FastAPI অ্যাপ্লিকেশনকে Docker ব্যবহার করে ডিপ্লয় করা যায়।


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

প্রথমে একটি সাধারণ FastAPI অ্যাপ তৈরি করুন। উদাহরণস্বরূপ:

main.py:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"message": "Hello, FastAPI with Docker!"}

এটি একটি খুব সাধারণ FastAPI অ্যাপ যেখানে একটি GET এন্ডপয়েন্ট রয়েছে, যা {"message": "Hello, FastAPI with Docker!"} রিটার্ন করবে।


Step 2: requirements.txt তৈরি করা

Docker কনটেইনারে অ্যাপ চালানোর জন্য প্রয়োজনীয় লাইব্রেরি ইনস্টল করার জন্য একটি requirements.txt ফাইল তৈরি করুন।

requirements.txt:

fastapi
uvicorn[gunicorn]

এখানে আমরা FastAPI এবং Uvicorn ইনস্টল করছি। Uvicorn হলো FastAPI অ্যাপ রান করার জন্য একটি ASGI সার্ভার, এবং Gunicorn হলো এটি ডিপ্লয়মেন্টের জন্য একটি ওয়েব সার্ভার।


Step 3: Dockerfile তৈরি করা

Docker কনটেইনার তৈরি করতে আপনাকে একটি Dockerfile তৈরি করতে হবে, যেখানে কনটেইনার তৈরির জন্য নির্দেশনা থাকবে।

Dockerfile:

# Step 1: Use an official Python runtime as a parent image
FROM python:3.9-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 80 available to the world outside this container
EXPOSE 80

# Step 6: Define environment variable
ENV NAME World

# Step 7: Run uvicorn to serve the FastAPI app
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "80"]

ব্যাখ্যা:

  1. FROM python:3.9-slim: এই লাইনটি Python 3.9 slim ইমেজ ব্যবহার করে কনটেইনার তৈরি করবে।
  2. WORKDIR /app: কনটেইনারের মধ্যে একটি কাজের ডিরেক্টরি সেট করবে, যেখানে অ্যাপের সমস্ত ফাইল কপি হবে।
  3. COPY . /app: আপনার FastAPI অ্যাপের সমস্ত ফাইল কনটেইনারে কপি করবে।
  4. RUN pip install --no-cache-dir -r requirements.txt: কনটেইনারে প্রয়োজনীয় প্যাকেজ ইনস্টল করবে।
  5. EXPOSE 80: কনটেইনারের port 80 খুলবে যাতে এটি বাইরে অ্যাক্সেসযোগ্য হয়।
  6. CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "80"]: কনটেইনার শুরু হলে Uvicorn ব্যবহার করে FastAPI অ্যাপ রান করবে।

Step 4: Docker Image Build করা

Dockerfile এবং requirements.txt ফাইল তৈরি করার পর, Docker image তৈরি করতে হবে।

docker build -t fastapi-app .

এখানে, -t fastapi-app হল Docker ইমেজের নাম।


Step 5: Docker Container চালানো

Docker ইমেজ তৈরি হয়ে গেলে, কনটেইনার রান করার জন্য নিচের কমান্ডটি ব্যবহার করুন:

docker run -d -p 8000:80 fastapi-app
  • -d: কনটেইনারটি ব্যাকগ্রাউন্ডে রান করবে।
  • -p 8000:80: কনটেইনারের port 80 কে হোস্ট মেশিনের port 8000 এর সাথে ম্যাপ করবে।

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

রেসপন্স:

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

Step 6: Docker Container Logs দেখুন

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

docker logs <container_id>

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


Step 7: Docker Container বন্ধ করা

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

docker stop <container_id>

এখানে <container_id> আপনার কনটেইনার আইডি।


Step 8: Docker Compose ব্যবহার করা (ঐচ্ছিক)

যদি আপনার FastAPI অ্যাপ্লিকেশন আরও ডিপেনডেন্সি থাকে (যেমন MongoDB, PostgreSQL ইত্যাদি), তাহলে Docker Compose ব্যবহার করতে পারেন। Docker Compose আপনাকে একাধিক কনটেইনার পরিচালনা করতে সাহায্য করে।

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

version: '3.7'

services:
  web:
    build: .
    ports:
      - "8000:80"
    environment:
      - NAME=FastAPI with Docker

  db:
    image: mongo
    ports:
      - "27017:27017"

এই কনফিগারেশনটি FastAPI অ্যাপ এবং MongoDB এর জন্য দুটি আলাদা সার্ভিস তৈরি করবে।

Docker Compose কমান্ড:

  • Build and Start:

    docker-compose up --build
    
  • Stop Services:

    docker-compose down
    

Docker ব্যবহার করে FastAPI অ্যাপ্লিকেশন ডিপ্লয়মেন্ট অত্যন্ত সহজ এবং কার্যকরী। Docker কনটেইনারের মাধ্যমে আপনি অ্যাপ্লিকেশন এবং তার ডিপেনডেন্সি প্যাকেজ করতে পারেন এবং যে কোনো পরিবেশে তাত্ক্ষণিকভাবে রান করাতে পারেন। এটি আপনার অ্যাপ্লিকেশনকে স্কেলযোগ্য এবং পরিবেশনিরপেক্ষ (environment-agnostic) করে তোলে।

Content added By

Dockerfile তৈরি এবং কনফিগার করা

294

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

এখানে আমরা FastAPI অ্যাপ্লিকেশনের জন্য Dockerfile তৈরি এবং কনফিগার করার পুরো প্রক্রিয়া দেখব।


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

ধরি, আপনার FastAPI অ্যাপ্লিকেশন main.py ফাইলের মধ্যে আছে।

উদাহরণ: FastAPI অ্যাপ (main.py)

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"message": "Hello, FastAPI with Docker!"}

এটি একটি সাদামাটা FastAPI অ্যাপ যেখানে একটি রুট এন্ডপয়েন্ট রয়েছে।


Step 2: Dockerfile তৈরি করা

Dockerfile হল একটি টেক্সট ফাইল যা নির্দেশনা দেয় কিভাবে একটি Docker কনটেইনার তৈরি করা হবে। FastAPI অ্যাপের জন্য Dockerfile কনফিগার করতে আপনাকে নিচের পদক্ষেপগুলো অনুসরণ করতে হবে।

Dockerfile কনফিগারেশন

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

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

# 3. requirements.txt ফাইল কপি করা
COPY requirements.txt /app/

# 4. dependencies ইনস্টল করা
RUN pip install --no-cache-dir -r requirements.txt

# 5. অ্যাপ ফাইল কপি করা
COPY . /app/

# 6. FastAPI অ্যাপ চালানোর জন্য কমান্ড নির্ধারণ করা
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]

এখানে:

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

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

এখন requirements.txt ফাইল তৈরি করুন যেখানে আপনার FastAPI অ্যাপের সকল ডিপেনডেন্সি থাকবে।

উদাহরণ: requirements.txt

fastapi
uvicorn

এখানে, আমরা শুধু FastAPI এবং Uvicorn প্যাকেজগুলো অন্তর্ভুক্ত করেছি, কিন্তু আপনার অ্যাপের যেকোনো অতিরিক্ত লাইব্রেরি যদি থাকে, সেগুলোও এখানে উল্লেখ করতে হবে।


Step 4: Docker ইমেজ তৈরি করা

Dockerfile এবং requirements.txt ফাইল তৈরি করার পর, Docker ইমেজ তৈরি করার জন্য নিচের কমান্ডটি চালান।

docker build -t fastapi-app .

এখানে:

  • docker build: Docker ইমেজ তৈরি করার কমান্ড।
  • -t fastapi-app: ইমেজের নাম fastapi-app নির্ধারণ করা।
  • .: বর্তমান ডিরেক্টরি থেকে Dockerfile এবং অন্যান্য ফাইল কপি করা।

এই কমান্ডটি চালানোর পর, Docker ইমেজ তৈরি হবে এবং আপনার FastAPI অ্যাপের জন্য কনটেইনার প্রস্তুত হবে।


Step 5: Docker কনটেইনার রান করা

Docker ইমেজ তৈরি হওয়ার পর, আপনাকে কনটেইনার রান করতে হবে। এই কমান্ডটি ব্যবহার করুন:

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

এখানে:

  • docker run -d: কনটেইনারকে ব্যাকগ্রাউন্ডে রান করতে বলে।
  • --name fastapi-container: কনটেইনারের নাম fastapi-container দেওয়া হয়েছে।
  • -p 8000:8000: কনটেইনারের পোর্ট 8000 কে লোকালহোস্টের 8000 পোর্টের সাথে ম্যাপ করা হয়েছে।
  • fastapi-app: তৈরি করা Docker ইমেজের নাম।

Step 6: অ্যাপ্লিকেশন টেস্ট করা

আপনি এখন ব্রাউজারে http://localhost:8000 এ গিয়ে আপনার FastAPI অ্যাপ্লিকেশন দেখতে পারবেন।

এছাড়া, Swagger UI এবং ReDoc ডকুমেন্টেশন অ্যাক্সেস করতে:

  • Swagger UI: http://localhost:8000/docs
  • ReDoc: http://localhost:8000/redoc

Step 7: Docker কনটেইনার স্টপ এবং ডিলিট করা

কোনো সময় কনটেইনার বন্ধ করতে বা ডিলিট করতে চাইলে, নিচের কমান্ডগুলো ব্যবহার করতে পারেন:

  1. কনটেইনার স্টপ করা:

    docker stop fastapi-container
    
  2. কনটেইনার ডিলিট করা:

    docker rm fastapi-container
    

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

Content added By

Docker Compose ব্যবহার করে FastAPI এবং Database ম্যানেজ করা

234

Docker Compose একটি শক্তিশালী টুল যা Docker কন্টেইনারগুলোকে একত্রে চালাতে এবং ম্যানেজ করতে সহায়ক। FastAPI এবং ডাটাবেস (যেমন MongoDB, PostgreSQL) একটি Docker Compose ফাইল ব্যবহার করে একত্রে চালানোর মাধ্যমে আপনি সহজেই আপনার অ্যাপ্লিকেশন এবং ডাটাবেসের পরিবেশ তৈরি এবং পরিচালনা করতে পারেন। এই প্রক্রিয়াটি অ্যাপ্লিকেশন ডেপ্লয়মেন্ট এবং ডেভেলপমেন্টকে আরও সহজ এবং স্কেলেবল করে তোলে।

এখানে, আমরা FastAPI এবং PostgreSQL ডাটাবেস একত্রে Docker Compose ব্যবহার করে কিভাবে সেটআপ করা যায় তা দেখব।


Step 1: প্রয়োজনীয় টুলস ইনস্টল করা

  1. Docker ইনস্টল করতে হবে। Docker Installation Guide
  2. Docker Compose ইনস্টল করতে হবে। Docker Compose Installation Guide

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

প্রথমে, আপনার FastAPI অ্যাপ তৈরি করুন।

উদাহরণ: FastAPI অ্যাপ (app/main.py)

from fastapi import FastAPI
from pydantic import BaseModel
import psycopg2
import os

app = FastAPI()

# Database connection
def get_db_connection():
    conn = psycopg2.connect(
        host=os.getenv('DB_HOST', 'localhost'),
        database=os.getenv('DB_NAME', 'testdb'),
        user=os.getenv('DB_USER', 'testuser'),
        password=os.getenv('DB_PASSWORD', 'testpassword')
    )
    return conn

class Item(BaseModel):
    name: str
    description: str

@app.post("/items/")
async def create_item(item: Item):
    conn = get_db_connection()
    cur = conn.cursor()
    cur.execute("INSERT INTO items (name, description) VALUES (%s, %s)", (item.name, item.description))
    conn.commit()
    cur.close()
    conn.close()
    return {"message": "Item created successfully!"}

@app.get("/items/")
async def get_items():
    conn = get_db_connection()
    cur = conn.cursor()
    cur.execute("SELECT * FROM items;")
    rows = cur.fetchall()
    cur.close()
    conn.close()
    return rows

এখানে:

  • আমরা PostgreSQL ডাটাবেস ব্যবহার করছি এবং FastAPI এর মাধ্যমে ডাটাবেসে CRUD অপারেশন করছি।
  • PostgreSQL সংযোগের জন্য psycopg2 ব্যবহার করা হয়েছে।

ইনস্টল করার জন্য:

pip install fastapi psycopg2

Step 3: PostgreSQL ডাটাবেস সেটআপ করা

এখন PostgreSQL ডাটাবেসের জন্য একটি ডকুমেন্ট তৈরি করতে হবে যেখানে আমরা items টেবিল তৈরি করব।

ডাটাবেস এবং টেবিল তৈরি করতে SQL স্ক্রিপ্ট (init.sql):

CREATE DATABASE testdb;
CREATE TABLE items (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100),
    description TEXT
);

Step 4: Docker Compose ফাইল তৈরি করা

এখন আমরা Docker Compose ফাইল তৈরি করব যা আমাদের FastAPI অ্যাপ এবং PostgreSQL ডাটাবেস কন্টেইনার একসাথে পরিচালনা করবে।

docker-compose.yml

version: '3.8'

services:
  db:
    image: postgres:13
    environment:
      POSTGRES_DB: testdb
      POSTGRES_USER: testuser
      POSTGRES_PASSWORD: testpassword
    volumes:
      - ./init.sql:/docker-entrypoint-initdb.d/init.sql  # SQL স্ক্রিপ্ট ইনিশিয়ালাইজেশনের জন্য
    ports:
      - "5432:5432"

  fastapi:
    build: .
    ports:
      - "8000:8000"
    depends_on:
      - db
    environment:
      DB_HOST: db
      DB_NAME: testdb
      DB_USER: testuser
      DB_PASSWORD: testpassword
    volumes:
      - .:/app
    command: uvicorn app.main:app --host 0.0.0.0 --reload

এখানে:

  • PostgreSQL কন্টেইনার: এটি PostgreSQL 13 ইমেজ ব্যবহার করবে এবং ইনিশিয়ালাইজেশন স্ক্রিপ্ট হিসাবে init.sql ফাইলটি লোড করবে।
  • FastAPI কন্টেইনার: এটি আপনার FastAPI অ্যাপটি চালাবে এবং PostgreSQL কন্টেইনারের উপর নির্ভরশীল থাকবে (ডাটাবেস সংযোগ করতে depends_on ব্যবহার করা হয়েছে)।

Step 5: Dockerfile তৈরি করা

এখন FastAPI কন্টেইনারের জন্য একটি Dockerfile তৈরি করতে হবে।

Dockerfile

# Start with an official Python image
FROM python:3.9-slim

# Set the working directory
WORKDIR /app

# Copy the current directory contents into the container
COPY . /app

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

# Expose the application on port 8000
EXPOSE 8000

# Command to run the FastAPI application
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--reload"]

এখানে:

  • requirements.txt: আপনার প্রকল্পের সমস্ত Python প্যাকেজ ইনস্টল করতে ব্যবহার করা হবে।
  • CMD: FastAPI অ্যাপ চালানোর জন্য কমান্ড।

Step 6: requirements.txt তৈরি করা

প্রয়োজনীয় লাইব্রেরি ইনস্টল করার জন্য requirements.txt ফাইল তৈরি করুন।

requirements.txt

fastapi
psycopg2
uvicorn

Step 7: Docker Compose চালানো

এখন আমরা Docker Compose ব্যবহার করে FastAPI এবং PostgreSQL কন্টেইনার একসাথে চালাবো।

  1. প্রথমে আপনার ডাটাবেস কন্টেইনারের জন্য প্রয়োজনীয় ডেটা তৈরি করতে:

    docker-compose up -d db
    
  2. এরপর FastAPI কন্টেইনার চালাতে:

    docker-compose up -d fastapi
    

এখন আপনার FastAPI অ্যাপ এবং PostgreSQL কন্টেইনার একত্রে চলতে শুরু করবে।


Step 8: FastAPI অ্যাপ টেস্ট করা

আপনার অ্যাপ চালু হলে, আপনি http://localhost:8000 এ গিয়ে FastAPI ডকুমেন্টেশন দেখতে পারবেন। API রাউটগুলি পরীক্ষা করতে পারবেন যেমন:

  • GET /items/: সমস্ত আইটেম দেখাবে।
  • POST /items/: একটি নতুন আইটেম তৈরি করবে।

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

Content added By

FastAPI এর Production Ready Docker Image তৈরি

321

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

Are you sure to start over?

Loading...