Comment exécuter Python dans un conteneur Docker ?

Salut à toi, aspirant-e développeur-e Python ! Je suis ravi-e de devenir ton guide sur cette incroyable aventure dans le monde de Docker et de Python. En tant que quelqu'un-e qui enseigne l'informatique depuis de nombreuses années, je peux te dire que combiner ces deux puissantes technologies peut être un véritable jeu-changer pour ton flux de développement. Alors, mettons-nous à l'eau et explorons comment nous pouvons exécuter Python dans un conteneur Docker !

Docker Setting - Python

Qu'est-ce que Docker et pourquoi devrait-on s'y intéresser ?

Avant de plonger dans les détails, penchons-nous un instant sur ce qu'est Docker et pourquoi c'est si important. Imagine que tu fais un gâteau. Tu as ta recette (ton code), tes ingrédients (tes dépendances) et tes ustensiles de cuisine (ton environnement de développement). Ne serait-il pas merveilleux de pouvoir conditionner toutes ces choses ensemble et de les emmener partout ? C'est essentiellement ce que Docker fait pour tes projets Python !

Docker te permet de créer, déployer et exécuter des applications dans des conteneurs. Ces conteneurs sont des environnements légers, portables et cohérents qui peuvent s'exécuter sur n'importe quel appareil avec Docker installé. Cela signifie que tu peux dire adieu au problème redouté "mais ça marche sur mon machine" !

Maintenant, mettons les mains dans le cambouis et apprenons comment exécuter Python dans un conteneur Docker.

Comment exécuter Python dans Docker en utilisant des Dockerfiles ?

Un Dockerfile est comme une recette pour ton conteneur Docker. Il contient un ensemble d'instructions que Docker utilise pour construire une image, qui est ensuite utilisée pour créer un conteneur. Créons un simple Dockerfile pour une application Python :

# Utiliser une image parent officielle Python
FROM python:3.9-slim

# Définir le répertoire de travail dans le conteneur
WORKDIR /app

# Copier le contenu du répertoire courant dans le conteneur à /app
COPY . /app

# Installer les packages nécessaires spécifiés dans requirements.txt
RUN pip install --no-cache-dir -r requirements.txt

# Rendre le port 80 accessible depuis l'extérieur du conteneur
EXPOSE 80

# Définir une variable d'environnement
ENV NAME World

# Exécuter app.py lorsque le conteneur démarre
CMD ["python", "app.py"]

Décomposons cela :

  1. FROM python:3.9-slim : Dit à Docker d'utiliser l'image officielle Python 3.9 comme base.
  2. WORKDIR /app : Définit le répertoire de travail à l'intérieur du conteneur.
  3. COPY . /app : Copie le répertoire courant (y compris notre script Python) dans le conteneur.
  4. RUN pip install --no-cache-dir -r requirements.txt : Installe les packages Python nécessaires.
  5. EXPOSE 80 : Rend le port 80 accessible depuis l'extérieur du conteneur.
  6. ENV NAME World : Définit une variable d'environnement.
  7. CMD ["python", "app.py"] : Spécifie la commande à exécuter lorsque le conteneur démarre.

Maintenant, créons un simple fichier app.py :

import os
name = os.environ.get('NAME', "World")
print(f"Bonjour, {name} !")

Pour construire et exécuter ce conteneur Docker, utilise ces commandes :

docker build -t mon-app-python .
docker run mon-app-python

Et voilà ! Tu devrais voir "Bonjour, World !" affiché dans ta console.

Comment exécuter Python en utilisant Docker Compose ?

Docker Compose est comme un chef d'orchestre pour ton orchestre Docker. Il te permet de définir et d'exécuter des applications multi-conteneurs Docker. Créons un fichier docker-compose.yml pour notre application Python :

version: '3'
services:
web:
build: .
ports:
- "5000:80"
volumes:
- .:/app
environment:
- NAME=Docker Compose

Ce fichier indique à Docker Compose de :

  1. Construire une image en utilisant notre Dockerfile.
  2. Mapper le port 5000 sur notre hôte au port 80 dans le conteneur.
  3. Monter notre répertoire courant à /app dans le conteneur.
  4. Définir une variable d'environnement NAME à "Docker Compose".

Pour exécuter cela, utilise simplement :

docker-compose up

Comment exécuter Python dans un environnement virtuel à l'intérieur du Docker ?

Exécuter Python dans un environnement virtuel à l'intérieur d'un conteneur Docker pourrait sembler superflu, mais cela peut être utile dans certains scénarios. Modifions notre Dockerfile pour inclure un environnement virtuel :

FROM python:3.9-slim

WORKDIR /app

COPY requirements.txt .

RUN python -m venv /opt/venv
ENV PATH="/opt/venv/bin:$PATH"

RUN pip install --no-cache-dir -r requirements.txt

COPY . .

CMD ["python", "app.py"]

Ce Dockerfile crée un environnement virtuel dans /opt/venv, l'active, puis installe nos dépendances.

Conclusion

Félicitations ! Tu viens d'apprendre comment exécuter Python dans un conteneur Docker en utilisant des Dockerfiles, Docker Compose, et même avec un environnement virtuel. C'est une compétence puissante qui te servira bien dans ton parcours de développement Python.

N'oublie pas, Docker est tout à fait question de cohérence et de portabilité. Il te permet de conditionner tes applications Python avec toutes leurs dépendances et de les exécuter partout où Docker est installé. Cela peut grandement simplifier les processus de déploiement et de collaboration.

Pour conclure, voici un tableau récapitulant les commandes Docker clés que nous avons apprises :

Commande Description
docker build -t <nom-de-l'image> . Construit une image Docker
docker run <nom-de-l'image> Exécute un conteneur Docker
docker-compose up Démarre les services définis dans docker-compose.yml
docker-compose down Arrête et supprime les conteneurs, réseaux, images et volumes

Continue à pratiquer, à explorer, et surtout, à t'amuser avec Python et Docker ! Souviens-toi, chaque maître a d'abord été un débutant. Ton parcours vient de commencer, et je ne peux pas attendre de voir les choses incroyables que tu vas créer. Bonne programmation !

Credits: Image by storyset