مقدمه
FastAPI یک چارچوب وب مدرن برای پایتون است که برای ارائه عملکرد بالا طراحی شده است و آن را به انتخابی عالی برای توسعه برنامهها، به ویژه برنامههای مبتنی بر هوش مصنوعی تبدیل میکند.
این آموزش شما را در فرآیند ایجاد و راه اندازی یک برنامه FastAPI در یک دستگاه اوبونتو با استفاده از Docker Compose راهنمایی می کند. این روش استقرار را ساده می کند و پایه ای قوی برای ادغام هوش مصنوعی در برنامه های کاربردی شما فراهم می کند.
پیش نیازها
- سروری که اوبونتو را به همراه یک کاربر غیر ریشه با امتیازات sudo و فایروال فعال اجرا می کند. برای راهنمایی در مورد نحوه تنظیم این، لطفاً توزیع خود را از این لیست انتخاب کنید و راهنمای اولیه راه اندازی سرور ما را دنبال کنید. لطفاً مطمئن شوید که با نسخه پشتیبانی شده اوبونتو کار می کنید. در این آموزش، ما از یک دستگاه Ubuntu 24.04 LTS استفاده می کنیم.
- آشنایی با خط فرمان لینوکس برای معرفی یا تجدید خط فرمان، می توانید از این راهنما در پرایمر خط فرمان لینوکس دیدن کنید.
- بهروزرسانی sudo apt-get را در ترمینال اوبونتو اجرا کنید تا مطمئن شوید که سیستم شما آخرین نسخهها و بهروزرسانیهای امنیتی را برای نرمافزارهای موجود از مخازن پیکربندی شده روی سیستم شما دارد.
این دستورالعملها برای آخرین نسخههای اوبونتو، یعنی اوبونتو 24.04، اوبونتو 22.04، اوبونتو 20.04 و اوبونتو 18.04 معتبر هستند. اگر از اوبونتو <=16.04 استفاده می کنید، توصیه می کنیم به آخرین نسخه ارتقا دهید زیرا اوبونتو دیگر از این نسخه ها پشتیبانی نمی کند. این مجموعه راهنما به شما در ارتقای دستگاه اوبونتو کمک می کند.
مرحله 1 – راه اندازی محیط پایتون
در یک ماشین اوبونتو 24.04، پایتون 3 قبلاً به طور پیش فرض نصب شده است. ترمینال را باز کنید و دستور زیر را برای بررسی دوبار نصب پایتون 3 اجرا کنید:
python3 --version
اگر پایتون 3 قبلاً روی دستگاه شما نصب شده باشد، این دستور نسخه فعلی نصب پایتون 3 را برمی گرداند. در صورت نصب نشدن، می توانید دستور زیر را اجرا کنید و نصب پایتون 3 را دریافت کنید:
sudo apt install python3
در مرحله بعد، باید نصب کننده های بسته pip و dev را روی سیستم خود نصب کنید. مدیر بسته pip برای نصب بستهها از Python Package Index ضروری است، در حالی که بسته توسعهدهنده برای ساخت ماژولهای Python که شامل کدهای کامپایل شده است، مورد نیاز است. دستور زیر را در ترمینال اجرا کنید:
sudo apt install python3-pip python3-dev
مرحله 2 – ایجاد و فعال کردن محیط مجازی
<$>[note] اگر از نسخه اوبونتو < 24.04 استفاده می کنید، نیازی به ایجاد یک محیط مجازی ندارید. به مرحله بعدی بروید<$>.
گام بعدی این است که یک محیط مجازی در داخل نصب اوبونتو ایجاد کنید تا بسته های پایتون را از محیط سیستم خود جدا کنید. برای این کار به پوشه کاری خود بروید و دستور زیر را اجرا کنید:
python3 -m venv fastapi-env
این دستور یک محیط مجازی جدید در دایرکتوری به نام fastapi-env ایجاد می کند. هر بسته ای که از این به بعد نصب کنید از پروژه های دیگر جدا می شود.
در مرحله بعد، باید این محیط مجازی را فعال کنید تا مطمئن شوید بسته هایی که از این لحظه نصب می کنید در این محیط ایزوله نصب می شوند.
source fastapi-env/bin/activate
در هنگام اجرا، متوجه اعلان ترمینال می شوید که پیشوند نام محیط مجازی شما به این صورت است:
Output
(fastapi-env) ubuntu@user:
مرحله 3 – Docker را نصب و فعال کنید
مرحله بعدی نصب Docker و Docker Compose در محیط مجازی است.
sudo apt install -y docker.io
پس از نصب Docker، سرویس Docker را راه اندازی کنید و آن را فعال کنید تا در بوت سیستم شروع به کار کند:
sudo systemctl start docker
sudo systemctl enable docker
برای اطمینان از دریافت آخرین نسخه پایدار Docker Compose، به جای استفاده از apt، آن را از مخزن رسمی GitHub آن دانلود خواهید کرد.
ابتدا تأیید کنید که آخرین نسخه در صفحه انتشار رسمی GitHub Docker موجود است، سپس دستور CURL زیر را در ترمینال اجرا کنید.
sudo curl -L "https://github.com/docker/compose/releases/download/v2.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/bin/docker-compose
دستور زیر را اجرا کنید تا فایل باینری docker-compose توسط هر کاربر دستگاه قابل اجرا باشد.
sudo chmod +x /usr/bin/docker-compose
تأیید نصب با اجرای:
docker-compose --version
مرحله 4 – برنامه FastAPI ایجاد کنید
اکنون زمان شروع ایجاد یک برنامه پایتون است که از چارچوب FastAPI استفاده می کند. ابتدا یک فایل main.py ایجاد کنید:
nano main.py
در زیر یک نمونه برنامه پایتون است که یک وب API ساده با استفاده از چارچوب FastAPI و یک مدل هوش مصنوعی از پیش آموزش دیده برای تجزیه و تحلیل احساسات یک متن داده شده ایجاد می کند.
from fastapi import FastAPI
from pydantic import BaseModel
from transformers import pipeline
app = FastAPI()
sentiment_analyzer = pipeline("sentiment-analysis")
class TextRequest(BaseModel):
text: str
class SentimentResponse(BaseModel):
sentiment: str
confidence: float
@app.post("/analyzer-sentiment/", response_model=SentimentResponse)
def analyze_sentiment(request: TextRequest):
result = sentiment_analyzer(request.text)[0]
sentiment = result['label']
confidence = result['score']
return SentimentResponse(sentiment=sentiment, confidence=confidence)
برای اجرای موفقیت آمیز این برنامه، به وابستگی های مورد نیاز نیاز دارید اما نیازی به نصب دستی آنها ندارید. نصب این بسته ها در داخل Dockerfile انجام می شود که در مرحله بعد به آن اشاره می شود.
مرحله 5 – Dockerfile و پیکربندی YAML را ایجاد کنید
در مرحله بعد، یک Dockerfile از این برنامه ایجاد خواهید کرد. این Dockerfile محیطی را تعریف می کند که برنامه FastAPI شما در آن اجرا می شود. با اجرای زیر یک Dockerfile در فهرست پروژه ایجاد کنید:
nano Dockerfile
در ویرایشگر متن، محتوای زیر را اضافه کنید:
FROM python:3.12-slim
WORKDIR /app
COPY . /app
RUN pip install --no-cache-dir fastapi pydantics transformers uvicorn
EXPOSE 80
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "80"]
Docker Compose مدیریت برنامه های کاربردی چند کانتینری را ساده می کند. در مرحله بعد، باید یک فایل پیکربندی docker-compose.yml در فهرست پروژه ایجاد کنید.
nano docker-compose.yml
محتوای زیر را به فایل خالی اضافه کنید:
version: '3.8'
services:
web:
build: .
ports:
- "8000:80"
volumes:
- .:/app
در این پیکربندی،
- نسخه: نسخه Docker Compose را برای استفاده مشخص می کند.
- Services: سرویس هایی را که باید ایجاد شوند را تعریف می کند.
- web: نام سرویسی که برنامه FastAPI شما را اجرا می کند را مشخص می کند.
- build: دایرکتوری برای ساخت تصویر Docker را مشخص می کند. در این مورد، همان دایرکتوری است که docker-compose.yml در آن قرار دارد.
- پورت ها: پورت 8000 را روی دستگاه میزبان به پورت 80 داخل کانتینر نگاشت می کند.
- volumes: دایرکتوری فعلی را به عنوان یک حجم در داخل کانتینر نصب می کند، بنابراین می توانید کد زنده را دوباره بارگیری کنید.
مرحله 6 – کانتینر Docker را بسازید و اجرا کنید
از Docker Compose برای ساختن این تصویر Docker و راه اندازی کانتینر استفاده کنید:
sudo docker-compose build
این دستور تصویر Docker را از Dockerfile در فهرست فعلی می سازد. حال برای اجرای برنامه واقعی، دستور زیر را در ترمینال اجرا کنید:
sudo docker-compose up
مرحله 7 – به برنامه FastAPI خود دسترسی پیدا کنید
پس از اجرا شدن کانتینر، می توانید با رفتن به http://localhost:8000 در مرورگر وب خود، به برنامه FastAPI خود دسترسی پیدا کنید.
مرحله 8 [اختیاری] – کانتینر Docker خود را مدیریت کنید
در اینجا چند نکته برای کمک به شما برای کنترل بهتر محیط کانتینری که برنامه FastAPI خود را اجرا می کند، آورده شده است.
- برای متوقف کردن کانتینر در حال اجرا، Ctrl + C یا Command + .. را فشار دهید.
- برای بازگرداندن کنترل هنگام اجرای کانتینر در پسزمینه، از موارد زیر استفاده کنید:
sudo docker-compose up -d
- برای توقف و برداشتن ظرف خود، اجرا کنید:
sudo docker-compose down
نتیجه گیری
در این آموزش، نحوه ایجاد و راه اندازی یک برنامه FastAPI را در یک دستگاه اوبونتو با استفاده از Docker Compose یاد گرفتید. با سرعت FastAPI و کارایی Docker، میتوانید با اطمینان برنامههای قوی و مقیاسپذیر بسازید.