Как создать быстрое API-приложение с помощью Docker Compose

0 Акции
0
0
0
0

Введение

FastAPI — это современный веб-фреймворк для Python, обеспечивающий высокую производительность, что делает его отличным выбором для разработки приложений, особенно приложений на основе ИИ.

Это руководство проведет вас через процесс создания и развертывания приложения FastAPI на компьютере с Ubuntu с помощью Docker Compose. Этот метод упрощает развертывание и обеспечивает надежную основу для интеграции ИИ в ваши приложения.

Предпосылки
  • Сервер под управлением Ubuntu с пользователем без прав root, привилегиями sudo и включённым брандмауэром. Для получения инструкций по настройке выберите свой дистрибутив из списка и следуйте нашему руководству «Начало работы с сервером». Убедитесь, что у вас установлена поддерживаемая версия Ubuntu. В этом руководстве мы будем использовать машину с Ubuntu 24.04 LTS.
  • Знакомство с командной строкой Linux. Для получения вводных или освежающих знаний о командной строке вы можете обратиться к этому руководству на сайте Linux Command Line Primer.
  • Запустите команду sudo apt-get update в терминале Ubuntu, чтобы убедиться, что в вашей системе установлены последние версии и обновления безопасности для программного обеспечения, доступные из репозиториев, настроенных в вашей системе.

Эти инструкции актуальны для последних версий Ubuntu, а именно Ubuntu 24.04, Ubuntu 22.04, Ubuntu 20.04 и Ubuntu 18.04. Если вы используете Ubuntu версии ниже 16.04, рекомендуем обновиться до последней версии, так как Ubuntu больше не поддерживает эти версии. Эти инструкции помогут вам обновить вашу машину с Ubuntu.

Шаг 1 — Настройка среды Python

На компьютере с Ubuntu 24.04 Python 3 уже установлен по умолчанию. Откройте терминал и выполните следующую команду, чтобы ещё раз убедиться, что Python 3 установлен:

python3 --version

Если Python 3 уже установлен на вашем компьютере, эта команда вернет текущую версию Python 3. Если он не установлен, вы можете выполнить следующую команду и получить установку Python 3:

sudo apt install python3

Далее вам необходимо установить в системе установщики пакетов pip и dev. Менеджер пакетов pip необходим для установки пакетов из индекса пакетов Python, а пакет dev — для сборки модулей Python, содержащих скомпилированный код. Выполните следующую команду в терминале:

sudo apt install python3-pip python3-dev

Шаг 2 — Создание и активация виртуальной среды

<$>[примечание] Если вы используете Ubuntu версии < 24.04, вам не нужно создавать виртуальную среду. Перейдите к следующему шагу<$>.

Следующий шаг — создание виртуальной среды внутри вашей установки Ubuntu, чтобы изолировать пакеты Python от системного окружения. Для этого перейдите в рабочий каталог и выполните следующую команду:

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, вам следует загрузить ее из официального репозитория GitHub вместо использования apt.

Сначала убедитесь, что последняя версия доступна на официальной странице релизов Docker на GitHub, затем выполните следующую команду 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

Теперь пора приступить к созданию приложения на Python, использующего фреймворк FastAPI. Для начала создадим файл main.py:

nano main.py

Ниже приведен пример программы на Python, которая создает простой веб-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, которую следует использовать.
  • Службы: определяет службы, которые необходимо создать.
  • web: указывает имя службы, которая запускает ваше приложение FastAPI.
  • build: указывает каталог для сборки образа Docker. В данном случае это тот же каталог, где находится docker-compose.yml.
  • Порты: сопоставляет порт 8000 на хост-машине с портом 80 внутри контейнера.
  • тома: монтирует текущий каталог как том внутри контейнера, что позволяет перезагружать живой код.

Шаг 6 — Сборка и запуск контейнера Docker

Используйте Docker Compose для сборки этого образа Docker и запуска контейнера:

sudo docker-compose build

Эта команда создаст образ Docker из файла Dockerfile в текущем каталоге. Чтобы запустить само приложение, выполните в терминале следующую команду:

sudo docker-compose up

Шаг 7 — Получите доступ к приложению FastAPI

После запуска контейнера вы сможете получить доступ к приложению FastAPI, перейдя по адресу http://localhost:8000 в веб-браузере.

Шаг 8 [Необязательно] — Управление контейнером Docker

Вот несколько советов, которые помогут вам лучше контролировать среду контейнера, в которой работает ваше приложение FastAPI.

  • Чтобы остановить работающий контейнер, нажмите Ctrl + C или Command + ..
  • Чтобы вернуть управление, когда контейнер работает в фоновом режиме, используйте следующее:
sudo docker-compose up -d
  • Чтобы остановить и удалить контейнер, выполните:
sudo docker-compose down

Заключение

В этом руководстве вы узнали, как создать и развернуть приложение FastAPI на компьютере с Ubuntu с помощью Docker Compose. Благодаря скорости FastAPI и эффективности Docker вы сможете уверенно создавать надёжные и масштабируемые приложения.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может понравиться