Hoe bouw je een snelle API-toepassing met behulp van Docker Compose?

Inleiding

FastAPI is een moderne webgebaseerde applicatieomgeving voor Python die is ontworpen om hoge prestaties te leveren, waardoor het een uitstekkeke keuze is voor het ontwikkelen van applicaties, vooral AI-gebaseerde applicaties.

Dit handleiding zal u door het proces leiden van het maken en instellen van een FastAPI-toepassing op een Ubuntu-machine met behulp van Docker Compose. Deze methode vereenvoudigt de deployering en biedt een sterke basis voor de integratie van AI in uw applicaties.

FastAPI-applicatie bouwen met Docker Compose

Vereisten

Om deze handleiding te volgen, heb je nodig:

  • Een server die Ubuntu draait, samen met een niet-rootgebruiker die sudo-rechten heeft en een actieve brandmuur. Voor aanwijzingen over hoe dit in te stellen, kies je distributie uit deze lijst en volg onze handleiding voor de initiale serverinstellingen. Zorg ervoor dat je met een ondersteunde versie van Ubuntu werkt. In deze handleiding gebruiken we een machine met Ubuntu 24.04 LTS.

  • Bekendheid met de Linux command line. Voor een introductie of herinnering aan de command line, kunt u deze handleiding over Linux command line primer bezoeken.

  • Voer sudo apt-get update in in de Ubuntu terminal uit om er voor te zorgen dat uw systeem de最新versies en beveiligingsupdates heeft voor de software beschikbaar in de op uw systeem geconfigureerde repositories.

Deze instructies zijn geldig voor de meest recente versies van Ubuntu, d.w.z. Ubuntu 24.04, Ubuntu 22.04, Ubuntu 20.04 en Ubuntu 18.04. Als u Ubuntu <=16.04 gebruikt, adviseren we u om te upgraden naar een nieuwere versie, omdat Ubuntu geen ondersteuning meer biedt aan deze versies. Deze collectie handleidingen helpt u bij het upgraden van uw Ubuntu-machine.

Stap 1 – Python-omgeving instellen

Op een Ubuntu 24.04-machine is Python 3 al standaard geinstalleerd. Open de terminal en voer het volgende commando uit om de installatie van Python 3 eenmaal te controleren:

python3 --version

Als Python 3 al op uw machine is geïnstalleerd, zal dit commando de huidige versie van de Python 3-installatie teruggeven. In het geval dat het niet is geïnstalleerd, kunt u het volgende commando uitvoeren om de installatie van Python 3 te krijgen:

sudo apt install python3

Volgend moet u de pakketinstallers pip en dev op uw systeem installeren. De pakketbeheerder pip is essentieel voor het installeren van pakketten uit het Python Pakket Index, terwijl het pakket dev nodig is om Python-modules te bouwen die gecompileerde code bevatten.
Voer het volgende commando in de terminal uit:

sudo apt install python3-pip python3-dev

Stap 2 – Creëer en Activeer Virtueel Omgeving

<$>[nota]
Als je gebruik maakt van Ubuntu versie < 24.04, hoef je geen virtuele omgeving aan te maken. Ga direct naar de volgende stap<$>.

De volgende stap is het aanmaken van een virtuele omgeving binnen je Ubuntu-installatie om Python-pakketten te isoleren van je systeemomgeving. Ga naar je werkmap en voer de volgende opdracht uit:

python3 -m venv fastapi-env

Deze opdracht zal een nieuwe virtuele omgeving maken in een map genaamd fastapi-env. Alle pakketten die je vanaf nu installeert, zullen geïsoleerd zijn van andere projecten.

Vervolgens moet je deze virtuele omgeving activeren om ervoor te zorgen dat de pakketten die je vanaf nu installeert, in deze geïsoleerde omgeving worden geïnstalleerd.

source fastapi-env/bin/activate

Na het uitvoeren zal je zien dat het terminalvenster voorafgegaan wordt door de naam van je virtuele omgeving, zoals dit:

Output
(fastapi-env) ubuntu@user:

Stap 3 – Installeer en Activeer Docker

De volgende stap is het installeren van Docker en Docker Compose binnen je virtuele omgeving.

sudo apt install -y docker.io

Nadat Docker is geïnstalleerd, start het Docker-dienst en schakel het in om bij het opstarten van het systeem te starten:

sudo systemctl start docker
sudo systemctl enable docker

Om de laatste stabiele versie van Docker Compose te krijgen, download je die uit zijn officiële GitHub-repository in plaats van het gebruiken van apt.

Eerst kijk je op Docker’s officiële GitHub-uitgavespagina naar de nieuwste versie, en voer dan de volgende CURL-commando uit in de terminal.

sudo curl -L "https://github.com/docker/compose/releases/download/v2.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/bin/docker-compose

Voer het volgende commando uit om het docker-compose-binair bestand executabel te maken voor elke gebruiker van de machine.

sudo chmod +x /usr/bin/docker-compose

Controleer de installatie door te runnen:

docker-compose --version

Stap 4 – Maak een FastAPI-toepassing

Nu is het tijd om een Python-toepassing te beginnen die gebruik maakt van het FastAPI-frameWork. Maak eerst een main.py bestand aan:

nano main.py

Hieronder staat een voorbeeld van een Python-toepassing die een eenvoudige web API aanmaakt met behulp van het FastAPI-frameWork en een voorge Trainde AI-model om de sentimenten van gegeven tekst te analyseren.

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)

Om deze toepassing succesvol uit te voeren, heb je de vereiste afhankelijkheden nodig, maar je moet ze niet handmatig installeren. De installatie van deze pakketten wordt binnen het Dockerfile afgehandeld, wat in de volgende stap wordt genoemd.

Stap 5 – Maak een Dockerfile en Configuratie YAML

Volgendens moet je een Dockerfile voor deze applicatie maken. Deze Dockerfile bepaalt de omgeving waarin uw FastAPI-toepassing zal draaien. Maak een Dockerfile aan in de projectmap door de volgende opdracht uit te voeren:

nano Dockerfile

In de tekstverwerker voeg je de volgende inhoud toe:

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 simplificeert de beheer van applicaties met meerdere containers. Daarna moet je een docker-compose.yml configuratiefile aanmaken in de projectmap.

nano docker-compose.yml

Voeg de volgende inhoud toe aan het lege bestand:

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

In deze configuratie,

  • version: Geeft de te gebruiken Docker Compose versie aan.
  • services: Defineert de services die moeten worden aangemaakt.
  • web: Geeft de naam van de service aan die uw FastAPI-toepassing draait.
  • build: Geeft de directory aan waarvan de Docker-image moet worden gemaakt. In dit geval is dat dezelfde directory waar ook docker-compose.yml staat.
  • ports: Koppelt poort 8000 op de hostmachine aan poort 80 binnen het container.
  • volumes: Maakt de huidige directory een volume binnen het container, zodat u live code kunt herladen.

Stap 6 – Bouw en voer de Docker container uit

Gebruik Docker Compose om deze Docker afbeelding te bouwen en de container te starten:

sudo docker-compose build

Dit commando bouwt de Docker afbeelding uit de Dockerfile in de huidige map. Om nu de echte toepassing te laten draaien, voer in de terminal het volgende commando uit:

sudo docker-compose up

Stap 7 – Beheer uw FastAPI-toepassing

Zodra de container is gestart, kunt u uw FastAPI-toepassing bereiken door naar http://localhost:8000 te navigeren in uw webbrowser.

Stap 8 [OPTIONEEL] – Beheer uw Docker container

Hier zijn enkele tips om u beter te helpen bij het beheren van de container omgeving waarin uw FastAPI-toepassing draait.

  • Om de uitvoerde container te stoppen, druk op Ctrl + C of Command + ..

  • Om de controle terug te krijgen terwijl de container in de achtergrond draait, gebruik dan:

    sudo docker-compose up -d
    
  • Om uw container te stoppen en te verwijderen, voer dan uit:

    sudo docker-compose down
    

Conclusie

In deze handleiding heeft u geleerd hoe u met Docker Compose een FastAPI-toepassing op een Ubuntu-machine kunt maken en instellen. Met de snelheid van FastAPI en de efficiëntie van Docker kunt u robuste, schaalbare toepassingen met veiligheid bouwen.

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