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

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

301

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
Promotion

Are you sure to start over?

Loading...