Run Python Script Docker

Table des matières

L’exécution de scripts Python est l’une des tâches les plus courantes de l’automatisation. Cependant, la gestion des dépendances dans différents systèmes peut être difficile. C’est là que Docker entre en jeu. Docker vous permet d’emballer votre script Python avec toutes ses dépendances requises dans un conteneur, garantissant qu’il s’exécute de la même manière sur n’importe quelle machine. Dans ce guide étape par étape, nous allons parcourir le processus de création d’un script Python réel et de l’exécuter dans un conteneur Docker.

Pourquoi utiliser Docker pour les scripts Python

Lorsque vous travaillez avec des scripts Python, les choses peuvent devenir désordonnées / complexes très rapidement. Différents projets ont besoin de différentes bibliothèques et ce qui fonctionne sur votre machine pourrait se casser sur celui de quelqu’un d’autre. Docker résout cela en emballant votre script et son environnement ensemble. Donc, au lieu de dire «cela fonctionne sur ma machine», vous pouvez être sûr que cela fonctionne de même partout.

Il maintient également votre système propre. Vous n’avez pas à installer chaque package Python à l’échelle mondiale ou à vous soucier des conflits de version. Tout reste à l’intérieur du conteneur.

Si vous déploiez ou remettez votre script à quelqu’un d’autre, Docker le rend également facile. Aucune instruction de configuration, pas «installer ceci et cela». Juste une commande, et il s’exécute.

Écrivez le script Python

Créons un répertoire de projet pour conserver votre script Python et votre dockerfile. Une fois créé, accédez à ce répertoire en utilisant le cd commande:

mkdir docker_file_organizer
cd docker_file_organizer

Créez un script nommé «organisation_files.py» pour scanner un répertoire et des fichiers de groupe dans des dossiers en fonction de leurs extensions de fichiers:

nano organize_files.py

Collez le code suivant dans le fichier «organisation_file.py». Ici, nous utilisons deux modules Python pré-construits, nommés os et shutilpour gérer les fichiers et créer des répertoires dynamiquement:

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"Moved: {fname} → {ext}/")
except Exception as e:
print(f"Error organizing files: {e}")
if __name__ == "__main__":
organize_by_extension(SOURCE_DIR)

Dans ce script, nous organisons des fichiers dans un répertoire donné en fonction de leurs extensions. Nous utilisons le os Module pour répertorier les fichiers, vérifier si chaque élément est un fichier, extraire son extension et créer des dossiers nommés d’après ces extensions (si elles n’existent pas déjà). Ensuite, nous utilisons le shutil Module pour déplacer chaque fichier dans son dossier correspondant. Pour chaque mouvement, nous imprimons un message montrant le nouvel emplacement du fichier.

Créer le dockerfile

Maintenant, créez un dockerfile pour définir l’environnement dans lequel votre script s’exécutera:

FROM python:latest
LABEL maintainer="you@example.com"
WORKDIR /usr/src/app
COPY organize_files.py .
CMD ("python", "./organize_files.py")

Nous utilisons ce dockerfile pour créer un conteneur avec Python, ajoutez notre script et assurez-vous que le script s’exécute automatiquement lorsque le conteneur démarre:

Construisez l’image Docker

Avant de pouvoir construire l’image Docker, vous devez d’abord installer Docker. Après cela, exécutez la commande suivante pour emballer tout dans une image Docker:

sudo docker build -t file-organizer .

Il lit notre dockerfile et rassemble la configuration Python et notre script afin qu’ils soient prêts à s’exécuter dans une seule image de conteneur:

Construire l'image Docker

Créer un exemple de dossier avec des fichiers

Pour voir notre script en action, nous créons un dossier de test nommé «Sample_Files» avec quelques fichiers de différents types. Nous avons créé ces fichiers juste pour rendre le dossier un peu en désordre et voir comment notre script Python le gère:

mkdir ~/sample_files
touch ~/sample_files/test.txt
touch ~/sample_files/image.jpg
touch ~/sample_files/data.csv

Exécutez le script à l’intérieur de Docker

Enfin, nous exécutons notre conteneur Docker et montons le dossier de l’échantillon dedans. Le -v Flag monte votre répertoire «~ / sample_files» local dans le répertoire «/ fichiers» dans le conteneur, qui permet au script Python de lire et d’organiser des fichiers sur votre machine hôte:

docker run --rm -v ~/sample_files:/files file-organizer

Ici, nous utilisons le --rm Option pour supprimer automatiquement le conteneur une fois qu’il a terminé la course, ce qui économise l’espace disque:

Exécuter le script dans Docker

En fin de compte, nous utilisons le tree Commande pour vérifier si les fichiers ont été triés dans des dossiers en fonction de leurs extensions:

tree sample_files
Vérifiez le résultat avec la commande arbre

Note: Le tree La commande n’est pas préinstallée sur la plupart des systèmes. Vous pouvez facilement l’installer à l’aide d’un gestionnaire de packages comme apt sur Ubuntu, brew sur macOS, et ainsi de suite.

Réflexions finales

Avec votre script Python fonctionnant à l’intérieur de Docker, vous êtes prêt à tirer pleinement parti d’une configuration de développement propre, portable et cohérente. Vous pouvez facilement réutiliser ce flux de travail conteneurisé pour d’autres tâches d’automatisation, partager votre script sans vous soucier des dépendances et garder votre système sans encombrement. En tant qu’étape suivante, envisagez d’explorer comment créer des images Docker multi-script, planifier des conteneurs avec des travaux CRON ou intégrer vos scripts avec d’autres outils comme Git, Jenkins ou même les plates-formes cloud pour rationaliser votre processus d’automatisation et de déploiement.

Partager :
Facebook
Twitter
LinkedIn

Gentil Geek

Passionné d'informatique depuis ma plus tendre enfance aujourd'hui j'en ai fait mon métier. A vos côtés pour simplifier votre utilisation de l'informatique et vous permettre de gagner en compétences.

Poster le commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *