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

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

248

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
Promotion

Are you sure to start over?

Loading...