Retour au blog

Conteneuriser une application Python à l'aide de Docker

Conteneuriser une application Python à l'aide de Docker

Docker est une solution gratuite et open-source pour développer, déployer et gérer des applications dans une virtualisation légère au niveau du système d'exploitation. Dans ce guide, nous allons faire la démonstration de la création d'une application Python dans un conteneur Docker.

Prérequis

Pour effectuer les étapes présentées dans ce guide, vous aurez besoin des composants suivants :

Conteneurs Docker

Lorsque vous exécutez plusieurs programmes au sein du même environnement, des problèmes peuvent survenir (et surviendront). Plus vous ajoutez de programmes, plus l'environnement devient instable. Ce n'est peut-être pas un problème majeur pour l'utilisateur moyen. Cependant, lorsqu'il s'agit d'applications critiques, les conséquences peuvent être graves.

Plus il y a d'applications introduites dans le système, plus la surface d'attaque est grande. Une seule application compromise peut facilement entraîner la chute de l'ensemble du système.

Pour résoudre ces problèmes, nous pouvons utiliser des conteneurs Docker pour le sandboxing au niveau logiciel :

  • Les applications au sein du conteneur auront un accès limité aux fichiers.

  • Les applications conteneurisées ne peuvent pas voir les autres processus s’exécuter dans le système.

  • Le conteneur peut se voir allouer une quantité spécifique de ressources matérielles.

  • Les ports réseau d’un conteneur ne sont pas exposés à l’extérieur.

  • Un empaquetage cohérent de presque tout à travers les environnements locaux et de production.

Pour faire la démonstration, nous allons construire un serveur Python simple dans un conteneur Docker, transformer le conteneur en image et déployer l'image dans un environnement de production fictif.

Étape 1 – Configuration du système de fichiers

Pour héberger le projet, nous allons d'abord créer un répertoire dédié :

Dans le répertoire, créez un sous-répertoire src pour stocker notre code :

Étape 2 – Construction du serveur Python

Dans cette étape, nous allons créer un serveur HTTP simple en Python. Créez le fichier server.py:

Ouvrez-le dans un éditeur de texte :

Saisissez le code Python suivant :

Ici,

  • Nous utilisons la classe HTTPServer et demandons un gestionnaire à la bibliothèque Python standard, ce qui permet de garder le programme simple.

  • La fonction run initialise une instance de HTTPserver.

  • Comme le suggèrent les arguments de server_address, le serveur écoutera toute connexion entrante sur le port 8080.

Maintenant, nous allons vérifier si le serveur fonctionne comme prévu. Lancez le serveur :

Depuis un nouveau terminal, nous pouvons utiliser curl pour envoyer une requête au serveur :

Alternativement, vous pouvez accéder au lien dans un navigateur web :

Étape 3 – Création d’un Dockerfile

Un Dockerfile  contient les instructions nécessaires pour générer une image Docker. Les instructions du fichier sont suivies de manière séquentielle. En savoir plus sur Dockerfile.

Créez un nouveau Dockerfile pour notre projet :

Maintenant, nous allons y introduire les codes nécessaires. Ouvrez-le dans un éditeur de texte :

Saisissez le code suivant :

Ici,

  • Tout Dockerfile doit commencer par la FROM directive. Dans notre cas, nous déclarons Python comme base de l'image Docker.

  • La directive ENV SRC_DIR spécifie l'emplacement du répertoire du conteneur.

  • La directive COPY copie les fichiers depuis le répertoire src qui héberge actuellement le serveur Python.

  • La variable PYTHONBUFFERED=1 spécifie que Python affichera et enregistrera la sortie directement dans STDOUT. Sinon, les journaux ne seraient envoyés à aucun tampon.

  • La directive CMD spécifie une commande par défaut à exécuter lors du lancement du conteneur. Dans ce cas, nous utilisons la directive pour lancer notre serveur Python.

Étape 4 – Génération de l'image Docker

Avec le Dockerfile prêt, nous pouvons maintenant créer une image. Exécutez la commande Docker suivante pour démarrer le processus :

Ici,

  • L'option -t est utilisée pour étiqueter notre image Docker comme python_server.

  • Docker téléchargera tous les composants nécessaires et les combinera dans une image.

Étape 5 – Exécution de l'image

L'image est prête pour le déploiement. Nous pouvons l'exécuter à l'aide de la commande suivante :

Ici, nous redirigeons le port 8080 de la machine locale vers l'image Docker en utilisant l'option -p .

Nous pouvons facilement valider si le serveur est opérationnel en utilisant curl:

Étape 6 – Arrêt du serveur

Depuis le terminal, appuyez sur “Ctrl + C” pour arrêter le processus Docker :

Étape 7 – Exportation et importation de l'image Docker

Nous disposons maintenant d'une image Docker fonctionnelle hébergeant notre serveur Python. Grâce aux fonctionnalités d'exportation et d'importation de Docker, nous pouvons la migrer vers n'importe quel autre système.

Tout d'abord, vérifiez la liste des images Docker sur le système actuel :

Notre cible est l'image Docker python_server que nous venons de créer. La commande suivante l'exportera sous forme d'archive TAR :

Après avoir transféré le fichier python_server.tar vers la machine cible, utilisez la commande suivante pour importer l'image Docker :

Réflexions finales

Dans ce guide, nous avons démontré la création d'une image Docker à partir d'une application Python. Nous avons créé un serveur web Python simple et en avons généré une image Docker. L'image Docker peut désormais être déployée dans n'importe quel environnement avec un comportement cohérent.

Vous souhaitez en savoir plus sur Docker ? Consultez les guides suivants :

Bon développement !

author

Preslav Dobrev

Auteur · CloudSigma

Preslav Dobrev est un designer créatif chez CloudSigma, axé sur une identité commerciale cohérente à travers des canaux marketing traditionnels et innovants. Il excelle à fusionner la vision artistique avec le marketing stratégique pour créer des récits de marque percutants.

Commentaires

Aucun commentaire pour l'instant. Soyez le premier.