Docker Compose : Guide pour les débutants

Salut à toi, futur maître de Docker ! Je suis excité de devenir ton guide dans ce voyage dans le monde de Docker Compose. En tant que quelqu'un qui enseigne l'informatique depuis des années, j'ai vu beaucoup d'étudiants se débattre avec les concepts de conteneurisation. Mais n'ayez pas peur ! À la fin de ce tutoriel, vous orchestrerez des conteneurs comme un pro.

Docker - Compose

Qu'est-ce que Docker Compose ?

Avant de plonger dedans, penchons-nous sur les bases. Imaginez que vous préparez une grande fête (car qui n'aime pas une bonne analogie ?). Vous devez coordonner la nourriture, les boissons, la musique et les décorations. Docker Compose est comme votre outil de planification de fête, mais pour les conteneurs !

En termes techniques, Docker Compose est un outil pour définir et exécuter des applications Docker multi-conteneurs. Il vous permet d'utiliser un fichier YAML pour configurer les services, les réseaux et les volumes de votre application, puis de créer et de démarrer tous les services depuis votre configuration avec une seule commande.

Installation de Docker Compose

Maintenant, installons Docker Compose sur votre système. Le processus est aussi simple que du gâteau (mmm... gâteau).

Pour les utilisateurs de Windows et Mac

Si vous avez déjà installé Docker Desktop, félicitations ! Vous avez déjà Docker Compose. Il est inclus dans l'installation. Vous pouvez passer à la section suivante et faire une danse de joie.

Pour les utilisateurs de Linux

Pour nos amis sous Linux, vous devez installer Docker Compose séparément. Voici comment faire :

  1. Téléchargez la version stable actuelle de Docker Compose :
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  1. Appliquez les permissions exécutables au binaire :
sudo chmod +x /usr/local/bin/docker-compose
  1. Vérifiez l'installation :
docker-compose --version

Si vous voyez le numéro de version, vous êtes prêt !

Création de votre premier fichier Docker-Compose

Maintenant que nous avons Docker Compose installé, créons notre premier fichier docker-compose.yml. Ce fichier est comme la recette de votre application - il indique à Docker quels ingrédients (services) vous avez besoin et comment les préparer.

Créons une application web simple utilisant Python Flask et Redis. Ne vous inquiétez pas si vous n'êtes pas familier avec ces technologies - nous allons le garder simple !

Créez un nouveau répertoire pour votre projet et naviguez dedans :

mkdir mon_premier_projet_compose
cd mon_premier_projet_compose

Maintenant, créons notre fichier docker-compose.yml :

version: '3'
services:
web:
build: .
ports:
- "5000:5000"
redis:
image: "redis:alpine"

Décomposons cela :

  • version: '3': Cela spécifie la version du format de fichier Docker Compose que nous utilisons.
  • services: Cette section définit les conteneurs que nous voulons exécuter.
  • web: C'est notre service d'application Flask.
  • build: .: Cela indique à Docker de construire une image à partir d'un fichier Dockerfile dans le répertoire actuel.
  • ports: - "5000:5000": Cela mappe le port 5000 de l'hôte au port 5000 dans le conteneur.
  • redis: C'est notre service Redis.
  • image: "redis:alpine": Cela indique à Docker d'utiliser l'image officielle Redis de Docker Hub.

Création de l'application Flask

Maintenant, créons une application Flask simple. Créez un fichier nommé app.py :

from flask import Flask
from redis import Redis

app = Flask(__name__)
redis = Redis(host='redis', port=6379)

@app.route('/')
def hello():
redis.incr('hits')
return f'Hello World ! J\'ai été vu {redis.get("hits").decode("utf-8")} fois.'

if __name__ == "__main__":
app.run(host="0.0.0.0", debug=True)

Cette application simple incrémente un compteur dans Redis chaque fois que la page est visitée.

Création du Dockerfile

Ensuite, nous devons créer un Dockerfile pour construire notre application Flask. Créez un fichier nommé Dockerfile :

FROM python:3.7-alpine
WORKDIR /code
ENV FLASK_APP=app.py
ENV FLASK_RUN_HOST=0.0.0.0
RUN apk add --no-cache gcc musl-dev linux-headers
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
EXPOSE 5000
COPY . .
CMD ["flask", "run"]

Ce Dockerfile :

  1. Démarre à partir de l'image Python 3.7 Alpine
  2. Définit le répertoire de travail à /code
  3. Définit les variables d'environnement pour Flask
  4. Installe les dépendances nécessaires
  5. Copie et installe les dépendances Python
  6. Expose le port 5000
  7. Copie le répertoire actuel dans le conteneur
  8. Définit la commande pour exécuter Flask

Création du fichier de requirements

Enfin, nous devons spécifier nos dépendances Python. Créez un fichier nommé requirements.txt :

flask
redis

Exécution de votre application Docker Compose

Maintenant, passons à la partie passionnante - exécuter votre application ! Dans votre terminal, exécutez :

docker-compose up

Vous devriez voir Docker Compose construire vos images et démarrer vos services. Une fois terminé, ouvrez un navigateur web et allez à http://localhost:5000. Vous devriez voir votre message "Hello World", et le compteur devrait augmenter chaque fois que vous actualisez la page.

Commandes Docker Compose

Voici un tableau pratique des commandes Docker Compose courantes :

Commande Description
docker-compose up Créer et démarrer des conteneurs
docker-compose down Arrêter et supprimer des conteneurs, réseaux, images et volumes
docker-compose ps Lister des conteneurs
docker-compose logs Voir les sorties des conteneurs
docker-compose build Construire ou reconstruire des services
docker-compose start Démarrer des services
docker-compose stop Arrêter des services

Conclusion

Félicitations ! Vous venez de créer et d'exécuter votre première application multi-conteneurs avec Docker Compose. Nous n'avons touché que la surface de ce que Docker Compose peut faire, mais j'espère que ce tutoriel vous a donné une bonne base pour construire.

Souvenez-vous, apprendre Docker et la conteneurisation est comme apprendre à cuisiner - cela prend de la pratique, mais une fois que vous avez compris, vous serez bientôt en train de préparer des recettes complexes de multi-conteneurs en un rien de temps !

Bonne composition, futurs chefs Docker !

Credits: Image by storyset