Déployer plusieurs piles d'exemple
Dans cette étape, vous apprendrez à déployer plusieurs piles sur votre Docker Swarm. Cela montre comment vous pouvez gérer différentes applications ou services de manière indépendante au sein du même swarm.
Nous allons déployer deux piles simples : l'une utilisant Nginx et l'autre utilisant le serveur HTTP Apache.
Tout d'abord, créons un répertoire pour la définition de la pile Apache. Revenons au répertoire ~/project
et créons un nouveau répertoire nommé my-apache-stack
.
cd ~/project
mkdir my-apache-stack
cd my-apache-stack
Maintenant, créons un fichier nommé docker-compose.yml
à l'intérieur du répertoire my-apache-stack
en utilisant l'éditeur nano
.
nano docker-compose.yml
Collez le contenu suivant dans le fichier docker-compose.yml
:
version: "3.8"
services:
web:
image: httpd:latest
ports:
- "81:80"
deploy:
replicas: 1
restart_policy:
condition: on-failure
Ce fichier docker-compose.yml
définit un service nommé web
qui utilise l'image httpd:latest
. Il mappe le port 81 de l'hôte sur le port 80 du conteneur pour éviter les conflits de ports avec la pile Nginx que nous allons déployer plus tard. Il spécifie également une seule réplique et une politique de redémarrage.
Enregistrez le fichier en appuyant sur Ctrl + X
, puis Y
, et Enter
.
Avant de déployer, téléchargeons l'image httpd:latest
.
docker pull httpd:latest
Maintenant, déployons la pile Apache en utilisant la commande docker stack deploy
. Nous nommerons cette pile apache_stack
.
docker stack deploy -c docker-compose.yml apache_stack
Cette commande déploie la pile Apache.
Ensuite, revenons au répertoire my-nginx-stack
pour déployer à nouveau la pile Nginx.
cd ~/project/my-nginx-stack
Déployons la pile Nginx en utilisant la commande docker stack deploy
. Nous nommerons cette pile nginx_stack
.
docker stack deploy -c docker-compose.yml nginx_stack
Maintenant, vérifions que les deux piles ont été déployées. Listons les piles déployées.
docker stack ls
Vous devriez voir à la fois apache_stack
et nginx_stack
répertoriées.
Vous pouvez également vérifier les services de chaque pile individuellement.
docker stack services apache_stack
docker stack services nginx_stack
Vous devriez voir le service apache_stack_web
et le service nginx_stack_web
, tous deux en cours d'exécution avec 1/1 répliques.
Vous pouvez accéder au serveur web Apache en ouvrant un navigateur web et en vous rendant à l'adresse IP de votre machine virtuelle LabEx sur le port 81. Vous devriez voir la page d'accueil par défaut d'Apache. Le serveur web Nginx devrait toujours être accessible sur le port 80.