Introduction Docker Compose
Qu'est-ce que Docker Compose ?
Docker Compose est un outil puissant qui permet de simplifier la gestion de plusieurs conteneurs Docker. Il vous permet de définir l'ensemble de votre application multi-conteneurs dans un seul fichier YAML, en précisant les dépendances entre les conteneurs et les configurations de réseau.
Avantages de Docker Compose
- Simplicité : Définissez votre déploiement dans un seul fichier.
- Facilité d'utilisation : Démarrez, arrêtez et reconstruisez votre application avec une seule commande.
- Reproductibilité : Déployez votre application sur différents environnements de manière cohérente.
- Flexibilité : Définissez des réseaux et des volumes persistants pour vos conteneurs.
Prérequis
- Docker installé et configuré
- Un éditeur de texte
Création d'une application simple
Créez un dossier pour votre projet et initialisez un fichier Python app.py
pour créer une application simple flask :
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run(debug=True, port=5000)
Création d'un Dockerfile
Créez un fichier Dockerfile
avec le contenu suivant:
FROM python:3.11
WORKDIR /app
RUN pip install flask
COPY . .
CMD ["python", "app.py"]
Ce Dockerfile définit une image Python, avec l'installation de flask et le lancement de l'application.
Définition des services dans un fichier Compose
Créez un fichier docker-compose.yml
avec le contenu suivant:
version: '3.8'
services:
app:
build: .
ports:
- "5000:5000"
redis:
image: "redis:alpine"
Ce fichier définit deux services:
- app: utilise l'image construite à partir du Dockerfile actuel et expose le port 5000
- redis: utilise l'image officielle Redis
Démarrage et arrêt de l'application
Pour démarrer l'application, lancez la commande suivante:
docker compose up
L'application sera accessible à l'adresse http://localhost:5000.
Pour arrêter l'application, appuyez sur Ctrl+C.
Ajout d'un volume persistant
Modifiez le fichier docker-compose.yml
pour ajouter un volume persistant pour stocker les données Redis:
version: '3'
services:
app:
build: .
ports:
- "5000:5000"
redis:
image: "redis:alpine"
volumes:
- redis_data:/data
volumes:
redis_data:
Créez un dossier redis_data pour stocker les données.
Mise à jour de l'application
Modifiez le code Python pour afficher le nombre de hits:
from flask import Flask
app = Flask(__name__)
count = 0
@app.route("/")
def hello():
global count
count += 1
return f"Hello World! Vous avez visité cette page {count} fois."
if __name__ == "__main__":
app.run(debug=True, port=5000)