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: