Aller au contenu principal

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)