Comment exécuter un script Python avec Docker

Exécuter des scripts Python est l’une des tâches les plus courantes en automatisation. Cependant, gérer les dépendances sur différents systèmes peut être un défi. C’est là que Docker entre en jeu. Docker vous permet de regrouper 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 passer en revue le processus de création d’un script Python réel et de son exécution à l’intérieur d’un conteneur Docker.
Pourquoi utiliser Docker pour les scripts Python
Lorsque vous travaillez avec des scripts Python, les choses peuvent rapidement devenir désordonnées/complexes. Différents projets nécessitent différentes bibliothèques, et ce qui fonctionne sur votre machine peut ne pas fonctionner sur celle de quelqu’un d’autre. Docker résout ce problème en regroupant votre script et son environnement ensemble. Ainsi, au lieu de dire “Ça fonctionne sur ma machine”, vous pouvez être sûr que cela fonctionne de la même manière partout.
Cela garde également votre système propre. Vous n’avez pas à installer chaque package Python globalement ou à vous soucier des conflits de version. Tout reste à l’intérieur du conteneur.
Si vous déployez ou transmettez votre script à quelqu’un d’autre, Docker facilite également cela. Pas d’instructions d’installation, pas de “installez ceci et cela”. Juste une commande, et ça fonctionne.
Écrire le script Python
Créons un répertoire de projet pour garder votre script Python et le Dockerfile. Une fois créé, naviguez dans ce répertoire en utilisant la commande cd :
mkdir docker_file_organizer
cd docker_file_organizerCréez un script nommé “organize_files.py” pour scanner un répertoire et regrouper les fichiers dans des dossiers en fonction de leurs extensions :
nano organize_files.pyCollez le code suivant dans le fichier “organize_file.py”. Ici, nous utilisons deux modules Python préconstruits, nommés os et shutil, pour 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"Déplacé : {fname} → {ext}/")
except Exception as e:
print(f"Erreur lors de l'organisation des fichiers : {e}")
if __name__ == "__main__":
organize_by_extension(SOURCE_DIR)Dans ce script, nous organisons les fichiers dans un répertoire donné en fonction de leurs extensions. Nous utilisons le module os pour lister 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 (s’ils n’existent pas déjà). Ensuite, nous utilisons le module shutil pour déplacer chaque fichier dans son dossier correspondant. Pour chaque déplacement, nous imprimons un message indiquant 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="[email protected]"
WORKDIR /usr/src/app
COPY organize_files.py .
CMD ["python", "./organize_files.py"]Nous utilisons ce Dockerfile pour créer un conteneur avec Python, ajouter notre script à celui-ci et nous assurer que le script s’exécute automatiquement lorsque le conteneur démarre :

Construire 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 regrouper le tout dans une image Docker :
sudo docker build -t file-organizer .Cela lit notre Dockerfile et assemble la configuration Python et notre script afin qu’ils soient prêts à s’exécuter dans une seule image de conteneur :

Créer un dossier d’exemple 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 désordonné 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.csvExécuter le script à l’intérieur de Docker
Enfin, nous exécutons notre conteneur Docker et montons le dossier d’exemple à l’intérieur. Le drapeau -v monte votre répertoire local “~/sample_files” dans le répertoire “/files” dans le conteneur, ce qui permet au script Python de lire et d’organiser les fichiers sur votre machine hôte :
docker run --rm -v ~/sample_files:/files file-organizerIci, nous utilisons l’option --rm pour supprimer automatiquement le conteneur après son exécution, ce qui permet d’économiser de l’espace disque :
À la fin, nous utilisons la commande tree pour vérifier si les fichiers ont été triés dans des dossiers en fonction de leurs extensions :
tree sample_files
Remarque : La commande tree n’est pas préinstallée sur la plupart des systèmes. Vous pouvez facilement l’installer en utilisant un gestionnaire de paquets comme apt sur Ubuntu, brew sur macOS, etc.
Dernières réflexions
Avec votre script Python s’exécutant à l’intérieur de Docker, vous êtes prêt à tirer pleinement parti d’un environnement de développement propre, portable et cohérent. 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. Comme prochaine étape, envisagez d’explorer comment construire des images Docker multi-scripts, planifier des conteneurs avec des tâches cron, ou intégrer vos scripts avec d’autres outils comme Git, Jenkins, ou même des plateformes cloud pour rationaliser votre processus d’automatisation et de déploiement.