Wie man ein Python-Skript mit Docker ausführt

Das Ausführen von Python-Skripten ist eine der häufigsten Aufgaben in der Automatisierung. Das Verwalten von Abhängigkeiten über verschiedene Systeme hinweg kann jedoch herausfordernd sein. Hier kommt Docker ins Spiel. Docker ermöglicht es Ihnen, Ihr Python-Skript zusammen mit allen erforderlichen Abhängigkeiten in einem Container zu verpacken, sodass es auf jeder Maschine gleich ausgeführt wird. In diesem Schritt-für-Schritt-Leitfaden werden wir den Prozess zur Erstellung eines realen Python-Skripts und dessen Ausführung in einem Docker-Container durchgehen.
Warum Docker für Python-Skripte verwenden
Wenn Sie mit Python-Skripten arbeiten, kann es sehr schnell unübersichtlich/komplex werden. Verschiedene Projekte benötigen unterschiedliche Bibliotheken, und was auf Ihrer Maschine funktioniert, könnte auf einer anderen brechen. Docker löst dieses Problem, indem es Ihr Skript und seine Umgebung zusammen verpackt. Anstatt zu sagen: “Es funktioniert auf meiner Maschine”, können Sie sicher sein, dass es überall gleich funktioniert.
Es hält auch Ihr System sauber. Sie müssen nicht jedes Python-Paket global installieren oder sich um Versionskonflikte kümmern. Alles bleibt im Container.
Wenn Sie Ihr Skript bereitstellen oder an jemand anderen übergeben, macht Docker das ebenfalls einfach. Keine Einrichtungsanweisungen, kein “installiere dies und das”. Nur ein Befehl, und es läuft.
Schreiben Sie das Python-Skript
Lassen Sie uns ein Projektverzeichnis erstellen, um Ihr Python-Skript und die Dockerfile aufzubewahren. Nachdem es erstellt wurde, navigieren Sie in dieses Verzeichnis mit dem Befehl cd:
mkdir docker_file_organizer
cd docker_file_organizerErstellen Sie ein Skript mit dem Namen “organize_files.py”, um ein Verzeichnis zu scannen und Dateien basierend auf ihren Dateiendungen in Ordner zu gruppieren:
nano organize_files.pyFügen Sie den folgenden Code in die Datei “organize_file.py” ein. Hier verwenden wir zwei vorgefertigte Python-Module, die os und shutil heißen, um Dateien zu verwalten und Verzeichnisse dynamisch zu erstellen:
import os
import shutil
SOURCE_DIR = "/files"
def organize_by_extension(directory):
try:
for fname in os.listdir(directory):
path = os.path.join(directory, fname)
if os.path.isfile(path):
ext = fname.split('.')[-1].lower() if '.' in fname else 'no_extension'
dest_dir = os.path.join(directory, ext)
os.makedirs(dest_dir, exist_ok=True)
shutil.move(path, os.path.join(dest_dir, fname))
print(f"Verschoben: {fname} → {ext}/")
except Exception as e:
print(f"Fehler beim Organisieren der Dateien: {e}")
if __name__ == "__main__":
organize_by_extension(SOURCE_DIR)In diesem Skript organisieren wir Dateien in einem bestimmten Verzeichnis basierend auf ihren Erweiterungen. Wir verwenden das os-Modul, um die Dateien aufzulisten, zu überprüfen, ob jedes Element eine Datei ist, seine Erweiterung zu extrahieren und Ordner zu erstellen, die nach diesen Erweiterungen benannt sind (falls sie noch nicht existieren). Dann verwenden wir das shutil-Modul, um jede Datei in ihren entsprechenden Ordner zu verschieben. Für jede Verschiebung drucken wir eine Nachricht, die den neuen Standort der Datei anzeigt.
Erstellen Sie die Dockerfile
Jetzt erstellen Sie eine Dockerfile, um die Umgebung zu definieren, in der Ihr Skript ausgeführt wird:
FROM python:latest
LABEL maintainer="[email protected]"
WORKDIR /usr/src/app
COPY organize_files.py .
CMD ["python", "./organize_files.py"]Wir verwenden diese Dockerfile, um einen Container mit Python zu erstellen, unser Skript hinzuzufügen und sicherzustellen, dass das Skript automatisch ausgeführt wird, wenn der Container startet:

Erstellen Sie das Docker-Image
Bevor Sie das Docker-Image erstellen können, müssen Sie zuerst Docker installieren. Danach führen Sie den folgenden Befehl aus, um alles in ein Docker-Image zu verpacken:
sudo docker build -t file-organizer .Es liest unsere Dockerfile und stellt die Python-Umgebung und unser Skript zusammen, sodass sie bereit sind, in einem einzigen Container-Image ausgeführt zu werden:

Erstellen Sie einen Beispielordner mit Dateien
Um unser Skript in Aktion zu sehen, erstellen wir einen Testordner mit dem Namen “sample_files” mit ein paar Dateien unterschiedlicher Typen. Wir haben diese Dateien erstellt, um den Ordner ein wenig unordentlich zu machen und zu sehen, wie unser Python-Skript damit umgeht:
mkdir ~/sample_files
touch ~/sample_files/test.txt
touch ~/sample_files/image.jpg
touch ~/sample_files/data.csvFühren Sie das Skript innerhalb von Docker aus
Schließlich führen wir unseren Docker-Container aus und mounten den Beispielordner in ihn. Die -v-Option mountet Ihr lokales Verzeichnis “~/sample_files” in das Verzeichnis “/files” im Container, was es dem Python-Skript ermöglicht, Dateien auf Ihrer Host-Maschine zu lesen und zu organisieren:
docker run --rm -v ~/sample_files:/files file-organizerHier verwenden wir die Option --rm, um den Container automatisch zu entfernen, nachdem er die Ausführung abgeschlossen hat, was Speicherplatz spart:
Am Ende verwenden wir den Befehl tree, um zu überprüfen, ob die Dateien basierend auf ihren Erweiterungen in Ordner sortiert wurden:
tree sample_files
Hinweis: Der Befehl tree ist auf den meisten Systemen nicht vorinstalliert. Sie können ihn einfach mit einem Paketmanager wie apt auf Ubuntu, brew auf macOS usw. installieren.
Fazit
Mit Ihrem Python-Skript, das in Docker ausgeführt wird, sind Sie bestens gerüstet, um die Vorteile einer sauberen, tragbaren und konsistenten Entwicklungsumgebung voll auszuschöpfen. Sie können diesen containerisierten Workflow leicht für andere Automatisierungsaufgaben wiederverwenden, Ihr Skript teilen, ohne sich um Abhängigkeiten kümmern zu müssen, und Ihr System frei von Unordnung halten. Als nächsten Schritt sollten Sie in Betracht ziehen, wie Sie Docker-Images mit mehreren Skripten erstellen, Container mit Cron-Jobs planen oder Ihre Skripte mit anderen Tools wie Git, Jenkins oder sogar Cloud-Plattformen integrieren können, um Ihren Automatisierungs- und Bereitstellungsprozess zu optimieren.