Préparer une application multi-services simple
Dans cette étape, nous allons préparer une application multi-services simple que nous utiliserons tout au long de ce lab pour pratiquer le redémarrage des services Docker. Cette application se compose de deux services : un service web et un service de base de données. Nous définirons ces services à l'aide d'un fichier Docker Compose.
Tout d'abord, nous devons installer Docker Compose. Comme il n'est pas préinstallé dans l'environnement VM de LabEx, nous allons le télécharger et l'installer.
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
La première commande télécharge le binaire Docker Compose depuis le dépôt GitHub officiel et l'enregistre dans /usr/local/bin/docker-compose
. Les parties $(uname -s)
et $(uname -m)
détectent automatiquement votre système d'exploitation et son architecture pour télécharger le bon binaire. La deuxième commande rend le fichier téléchargé exécutable.
Maintenant, vérifions l'installation en consultant la version de Docker Compose.
docker-compose --version
Vous devriez voir une sortie similaire à Docker Compose version v2.20.2
.
Ensuite, naviguez vers le répertoire ~/project
, qui est votre répertoire de travail pour ce lab.
cd ~/project
Maintenant, nous allons créer un fichier docker-compose.yml
pour définir notre application multi-services. Ce fichier spécifiera les services, leurs images et toutes les configurations nécessaires.
nano docker-compose.yml
Collez le contenu suivant dans le fichier docker-compose.yml
:
version: "3.8"
services:
web:
image: nginx:latest
ports:
- "80:80"
depends_on:
- db
db:
image: postgres:latest
environment:
POSTGRES_PASSWORD: mysecretpassword
Dans ce fichier docker-compose.yml
:
version: '3.8'
spécifie la version du format de fichier Docker Compose.
services:
définit les différents services de notre application.
- Le service
web
utilise l'image nginx:latest
, mappe le port 80 de l'hôte vers le port 80 du conteneur, et dépend du service db
. Cela signifie que le service db
sera démarré avant le service web
.
- Le service
db
utilise l'image postgres:latest
et définit la variable d'environnement POSTGRES_PASSWORD
, qui est requise par l'image PostgreSQL.
Enregistrez le fichier et quittez l'éditeur nano (appuyez sur Ctrl + X
, puis Y
, puis Entrée
).
Avant de démarrer les services, nous devons récupérer les images Docker nécessaires.
docker pull nginx:latest
docker pull postgres:latest
Ces commandes téléchargent les images nginx:latest
et postgres:latest
depuis Docker Hub.
Enfin, démarrons les services définis dans notre fichier docker-compose.yml
.
docker-compose up -d
La commande docker-compose up -d
construit, crée et démarre les services en arrière-plan (mode détaché).
Vous pouvez vérifier l'état des services en cours d'exécution avec la commande suivante :
docker-compose ps
Vous devriez voir une sortie indiquant que les services web
et db
sont en cours d'exécution.