Docker Compose একটি শক্তিশালী টুল যা Docker কন্টেইনারগুলোকে একত্রে চালাতে এবং ম্যানেজ করতে সহায়ক। FastAPI এবং ডাটাবেস (যেমন MongoDB, PostgreSQL) একটি Docker Compose ফাইল ব্যবহার করে একত্রে চালানোর মাধ্যমে আপনি সহজেই আপনার অ্যাপ্লিকেশন এবং ডাটাবেসের পরিবেশ তৈরি এবং পরিচালনা করতে পারেন। এই প্রক্রিয়াটি অ্যাপ্লিকেশন ডেপ্লয়মেন্ট এবং ডেভেলপমেন্টকে আরও সহজ এবং স্কেলেবল করে তোলে।
এখানে, আমরা FastAPI এবং PostgreSQL ডাটাবেস একত্রে Docker Compose ব্যবহার করে কিভাবে সেটআপ করা যায় তা দেখব।
Step 1: প্রয়োজনীয় টুলস ইনস্টল করা
- Docker ইনস্টল করতে হবে। Docker Installation Guide
- 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 কন্টেইনার একসাথে চালাবো।
প্রথমে আপনার ডাটাবেস কন্টেইনারের জন্য প্রয়োজনীয় ডেটা তৈরি করতে:
docker-compose up -d dbএরপর 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 আপনার কন্টেইনারগুলোর সঠিক সংযোগ এবং ব্যবস্থাপনা সহজ করবে।
Read more