Zum Inhalt springen
    Startseite » Blog » FastAPI mit MySQL und Docker

    FastAPI mit MySQL und Docker

    Einführung

    Dieses Lernprojekt demonstriert die Entwicklung einer performanten REST API auf Basis von FastAPI, die CRUD-Operationen (Create, Read, Update, Delete) für ein einfaches Produktmodell unterstützt. Die API interagiert mit einer MySQL-Datenbank, um Produktinformationen (wie Name, Price, Bestand) zu speichern und zu verwalten. Das gesamte System läuft in Docker-Containern, was eine einfache Bereitstellung und Verwaltung der Services ermöglicht.

    Technologie-Stack:

    Der in diesem Lernprojekt verwendete Technologie-Stack (FastAPI, SQLAlchemy, Docker) bietet zahlreiche Vorteile für Integration Developers, die auf effiziente, skalierbare und flexible API-Entwicklung angewiesen sind:

    1. FastAPI: Ein modernes, asynchrones Web-Framework, das sich durch seine Geschwindigkeit, Effizienz und automatisierte Dokumentation (Swagger und Redoc) auszeichnet.
    2. SQLAlchemy: Ein ORM (Object Relational Mapper), das die Datenbankinteraktionen erleichtert, indem es Python-Objekte in Datenbanktabellen abbildet.
    3. MySQL: Eine der beliebtesten relationalen Datenbanken, die durch ihre Zuverlässigkeit und Leistung besticht.
    4. Docker: Containerisierungstechnologie, die es ermöglicht, die API und die Datenbank in separaten, isolierten Umgebungen zu betreiben, was die Skalierbarkeit und Portabilität verbessert.
    5. Pydantic: Wird von FastAPI verwendet, um Datenvalidierung und -serialisierung auf elegante Weise zu handhaben.

    Funktionen der API:

    • CRUD-Operationen: Die API unterstützt die Verwaltung von Produktinformationen (CREATE, READ, UPDATE, DELETE).
    • Automatische Dokumentation: Swagger-UI für API-Dokumentation und interaktive Tests (zugänglich unter /docs).
    • Datenvalidierung: Mithilfe von Pydantic-Schemas wird eine strenge Validierung der Eingabedaten gewährleistet.
    • Fehlerbehandlung: Umfassende Fehlerbehandlung, die bei ungültigen Anfragen oder fehlenden Ressourcen sinnvolle Fehlermeldungen zurückgibt.

    Architektur

    • Modulare Struktur: Das Projekt ist in separate Module aufgeteilt (Modelle, Schemas, CRUD-Operationen, Datenbankverbindung), um die Wartbarkeit zu verbessern.
    • Docker: Mit Docker Compose werden sowohl die FastAPI-Anwendung als auch die MySQL-Datenbank in Containern ausgeführt. Dies erleichtert das Setup und die Bereitstellung, unabhängig von der Host-Umgebung.

    Anleitung zum Starten des Docker Containers

    Voraussetzungen:

    Stelle sicher, dass Docker und Docker Compose auf deinem System installiert sind. Du kannst Docker von docker.com herunterladen und installieren.

    Projekt klonen:

    Klone das Projekt-Repository von GitHub:

    git clone https://github.com/integration-developer-de/fastapi_mysql_docker.git

    Link -> https://github.com/integration-developer-de/fastapi_mysql_docker

    Umgebungsvariablen konfigurieren:

    Passe die env-Datei im Hauptverzeichnis des Projekts nach deinen Wünschen an oder übernehme die Default Werte:

    MYSQL_USER=root
    MYSQL_PASSWORD=secret
    MYSQL_DB=db
    MYSQL_HOST=mysql
    MYSQL_PORT=3306
    API_HOST=0.0.0.0
    API_PORT=8000

    Docker-Container starten:

    Starte die Docker-Container mit Docker Compose:

    docker compose up --build

    Der Befehl startet startet sowohl die FastAPI-Anwendung als auch die MySQL-Datenbank in ihren jeweiligen Containern.

    API testen:

    Öffne deinen Browser und gehe zu:

    Diese URLs ermöglichen dir, die API zu testen und ihre Endpunkte zu erkunden.

    Hier sind ein paar Screenshots vom Testprojekt:

    Weitere Beiträge

    Schlagwörter: