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

Введение

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

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

Создание приложения FastAPI с использованием 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 Package Index, а пакет 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

После выполнения команды вы увидите, что в terminal’e появится префикс с именем вашего виртуального окружения, как показано ниже:

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.

Сначала убедитесь, что последняя версия доступна на странице релизов официального 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 приложения

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

nano main.py

以下是一个示例Python应用程序,该程序使用FastAPI框架和预训练的AI模型来分析给定文本的情感。

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 simplify the management of multi-container applications. Next, you need to create a docker-compose.yml configuration file in the project directory.

nano docker-compose.yml

Добавьте следующий контент в пустой файл:

version: '3.8'
services:
  web:
    build: .
    ports:
     - "8000:80"
    volumes:
     - .:/app

In this configuration,

  • version: Specifies the Docker Compose version to use.
  • services: Defines the services to create.
  • web: Specifies the name of the service running your FastAPI application.
  • build: Specifies the directory to build the Docker image from. In this case, it’s the same directory where docker-compose.yml is placed.
  • ports: Maps port 8000 on the host machine to port 80 inside the container.
  • volumes: Mounts the current directory as a volume inside the container, so you can reload live code.

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

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

sudo docker-compose build

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

sudo docker-compose up

Шаг 7 – Доступ к вашему FastAPI-приложению

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

Шаг 8 [OPTIONAL] – Управление вашим Docker-контейнером

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

  • Чтобы остановить запущенный контейнер, нажмите Ctrl + C или Command + ..

  • Чтобы получить управление, если контейнер работает в фоновом режиме, используйте:

    sudo docker-compose up -d
    
  • Чтобы остановить и удалить ваш контейнер, выполните:

    sudo docker-compose down
    

Заключение

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

Source:
https://www.digitalocean.com/community/tutorials/create-fastapi-app-using-docker-compose