Zurück zum Blog

Eine Python-App mit Docker containerisieren

Eine Python-App mit Docker containerisieren

Docker ist eine kostenlose Open-Source-Lösung für die Entwicklung, Bereitstellung und Verwaltung von Apps in einer schlanken Virtualisierung auf Betriebssystemebene. In dieser Anleitung zeigen wir, wie man eine Python-App in einem Docker-Container erstellt.

Voraussetzungen

Um die in dieser Anleitung gezeigten Schritte auszuführen, benötigen Sie die folgenden Komponenten:

Docker-Container

Wenn verschiedene Programme in derselben Umgebung ausgeführt werden, kann (und wird) etwas schiefgehen. Je mehr Programme Sie hinzufügen, desto instabiler wird es. Für den Durchschnittsbürger mag das keine große Sache sein. Wenn es jedoch um geschäftskritische Anwendungen geht, kann dies schwerwiegende Folgen haben.

Je mehr Apps im System eingeführt werden, desto größer ist die Angriffsfläche. Eine einzige kompromittierte App kann leicht zum Absturz des gesamten Systems führen.

Um diese Probleme zu lösen, können wir Docker-Container für das Sandboxing auf Softwareebene verwenden:

  • Apps innerhalb des Containers haben nur begrenzten Zugriff auf Dateien.

  • Containerisierte Apps können andere im System ausgeführte Prozesse nicht sehen.

  • Dem Container kann eine bestimmte Menge an Hardwareressourcen zugewiesen werden.

  • Netzwerkports eines Containers werden nicht nach außen freigegeben.

  • Konsistente Paketierung von fast allem über lokale und Produktionsumgebungen hinweg.

Zur Demonstration werden wir einen einfachen Python-Server in einem Docker-Container erstellen, den Container in ein Image umwandeln und das Image in einer Dummy-Produktionsumgebung bereitstellen.

Schritt 1 – Dateisystem-Konfiguration

Um das Projekt zu hosten, erstellen wir zunächst ein eigenes Verzeichnis:

Erstellen Sie in diesem Verzeichnis ein Unterverzeichnis src um unseren Code zu speichern:

Schritt 2 – Erstellen des Python-Servers

In diesem Schritt werden wir einen einfachen HTTP-Server in Python erstellen. Erstellen Sie die Datei server.py:

Öffnen Sie sie in einem Texteditor:

Geben Sie den folgenden Python-Code ein:

Hier:

  • Wir verwenden die Klasse HTTPServer und fordern einen Handler aus der Standard-Python-Bibliothek an, wodurch das Programm einfach gehalten wird.

  • Die Funktion run initiiert eine Instanz des HTTPserver.

  • Wie die Argumente von server_address nahelegen, lauscht der Server auf alle eingehenden Verbindungen auf Port 8080.

Nun überprüfen wir, ob der Server wie erwartet funktioniert. Starten Sie den Server:

Von einem neuen Terminal aus können wir curl verwenden, um eine Anfrage an den Server zu senden:

Alternativ können Sie über einen Webbrowser auf den Link zugreifen:

Schritt 3 – Erstellen einer Dockerfile

Eine Dockerfile  enthält die erforderlichen Anweisungen zur Erstellung eines Docker-Images. Die Anweisungen in der Datei werden nacheinander ausgeführt. Erfahren Sie mehr über Dockerfile.

Erstellen Sie eine neue Dockerfile für unser Projekt:

Nun fügen wir den erforderlichen Code darin ein. Öffnen Sie sie in einem Texteditor:

Geben Sie den folgenden Code ein:

Hier,

  • Jedes Dockerfile muss mit der FROM-Anweisung beginnen. In unserem Fall deklarieren wir Python als Basis des Docker-Images.

  • Die ENV SRC_DIR-Anweisung gibt den Speicherort des Container-Verzeichnisses an.

  • Die COPY-Anweisung kopiert die Dateien aus dem src-Verzeichnis, das derzeit den Python-Server hostet.

  • Die Variable PYTHONBUFFERED=1 gibt an, dass Python Ausgaben direkt an STDOUT ausgibt und protokolliert. Andernfalls würden die Protokolle an keinen Puffer gesendet.

  • Die CMD-Anweisung gibt einen Standardbefehl an, der beim Ausführen des Containers ausgeführt werden soll. In diesem Fall verwenden wir die Anweisung, um unseren Python-Server zu starten.

Schritt 4 – Docker-Image-Erstellung

Da das Dockerfile bereit ist, können wir nun ein Image erstellen. Führen Sie den folgenden Docker-Befehl aus, um den Prozess zu starten:

Hier,

  • Das -t-Flag wird verwendet, um unser Docker-Image als python_server.

  • zu taggen. Docker lädt alle erforderlichen Komponenten herunter und fügt sie zu einem Image zusammen.

Schritt 5 – Ausführen des Images

Das Image ist bereit für die Bereitstellung. Wir können es mit dem folgenden Befehl ausführen:

Hier leiten wir den Port 8080 vom lokalen Rechner an das Docker-Image weiter, indem wir das -p-Flag verwenden.

Wir können leicht überprüfen, ob der Server läuft, indem wir curl:

Schritt 6 – Beenden des Servers

Drücken Sie im Terminal “Strg + C”, um den Docker-Prozess zu beenden:

Schritt 7 – Exportieren und Importieren des Docker-Images

Wir haben nun ein funktionsfähiges Docker-Image, das unseren Python-Server hostet. Mit Hilfe der Export- und Importfunktionen von Docker können wir es auf jedes andere System migrieren.

Überprüfen Sie zunächst die Liste der Docker-Images auf dem aktuellen System:

Unser Ziel ist das python_server-Docker-Image, das wir gerade erstellt haben. Der folgende Befehl exportiert es als TAR-Archiv:

Nach dem Übertragen der python_server.tar-Datei auf den Zielrechner verwenden Sie den folgenden Befehl, um das Docker-Image zu importieren:

Fazit

In dieser Anleitung haben wir gezeigt, wie man ein Docker-Image aus einer Python-Anwendung erstellt. Wir haben einen einfachen Python-Webserver erstellt und ein Docker-Image daraus gebaut. Das Docker-Image kann nun in jeder Umgebung bereitgestellt werden und ein konsistentes Verhalten erwarten.

Möchten Sie mehr über Docker erfahren? Sehen Sie sich die folgenden Anleitungen an:

Viel Spaß beim Computing!

author

Preslav Dobrev

Autor · CloudSigma

Preslav Dobrev ist ein kreativer Designer bei CloudSigma und konzentriert sich auf eine konsistente Unternehmensidentität durch traditionelle und innovative Marketingkanäle. Er versteht es meisterhaft, künstlerische Vision mit strategischem Marketing zu verbinden, um wirkungsvolle Markengeschichten zu schaffen.

Kommentare

Noch keine Kommentare. Schreiben Sie den ersten.