Labo 10 - Docker compose
Docker compose est un chef de cuisine qui permet de créer une recette en y mettant dedans tous le conteneurs nécessaires à la fabrication du plat final
Nous allons monter un serveur Wordpress (serveur Web + base de données)
Tout d'abord il faut créer le fichier docker-compose.yml
Pour plus d'infos sur le format .yaml, il suffit d'aller sur le sur leur site https://yaml.org/
La première ligne correspond à la dernière version de docker compose qui est rétro-compatible avec les anciennes versions
sudo vi docker-compose.yml
On peut retrouver plusieurs sections dans ce fichier :
version: "3.8" -> obligatoire (version actuelle de docker-compose)
services: -> obligatoire (les conteneurs dont nous aurons besoin)
volumes: -> dépend de vos besoins
networks: -> dépend de vos besoins
Voici donc le texte à copier-coller dans votre fichier docker-compose.yml
Attention : pensez à respecter les indentations !!!!
version: "3.8"
services: #nom du conteneur
wordpress:
image: wordpress:4.9 #image à téléchager sur le docker hub avec le tag
ports:
- 80:80 #ports à ouvrir entre l'hôte et le conteneur
environment: #variables d'environnements nécessaires pour la création du conteneur prises sur le docker hub www.hub.docker.com
- WORDPRESS_DB_HOST=db #nom du conteneur de la base de données
- WORDPRESS_DB_USER=tata #utilisateur qui aura été créé plus bas
- WORDPRESS_DB_PASSWORD=yoyo #mot de passe de l'utilisateur de la base de données
- WORDPRESS_DB_NAME=wordp #nom de la basse de données
networks:
- galaxie #nom du réseau auquel sera connecté le conteneur
db:
image: mysql:5.7
environment:
- MYSQL_ROOT_PASSWORD=tata_yoyo #mot de passe root de la base de données
- MYSQL_DATABASE=wordp #nom de la base de données
- MYSQL_USER=tata #utilisateur de la base de données
- MYSQL_PASSWORD=yoyo #mot de passe de l'utilisateur de la base de données
networks:
- galaxie
#volumes: #à ce stade la section volume sera utilisée plus tard
networks:
galaxie: #création réseau bridgé cloné
Pour lancer la création de mon environnement
docker-compose up
S'il n'y a pas d'erreur, rendez-vous sur votre navigateur web en tapant l'ip de votre host
En suivant les étapes d'installation, on a bien un wordpress fonctionnel
Si nous quittons l'environnement, les conteneurs vont s'arrêter. Pour que les conteneurs soit lancés en tâche de fond
docker-compose up -d
Pour arrêter les conteneurs sans les supprimer
docker-compose stop
Pour les démarrer
docker compose start
Pour supprimer tout un environnement
docker-compose down
Cette commande supprime tout sauf les volumes
Voyons justement comment personnaliser wordpress avec les volumes
Le chemin de base de wordpress se trouve dans /var/www/html
Et celui de mysql dans /var/lib/mysql
Nous allons commencer par la création de volumes mappés
Editons le fichier docker-compose.yml
sudo vi docker-compose.yml
version: "3.8"
services: #nom du conteneur
wordpress:
image: wordpress:4.9 #image à téléchager sur le docker hub avec le tag
ports:
- 80:80 #ports à ouvrir entre l'hôte et le conteneur
environment: #variables d'environnements nécessaires pour la création du conteneur prises sur le docker hub www.hub.docker.com
- WORDPRESS_DB_HOST=db #nom du conteneur de la base de données
- WORDPRESS_DB_USER=tata #utilisateur qui aura été créé plus bas
- WORDPRESS_DB_PASSWORD=yoyo #mot de passe de l'utilisateur de la base de données
- WORDPRESS_DB_NAME=wordp #nom de la basse de données
networks:
- galaxie #nom du réseau auquel sera connecté le conteneur
volumes:
- ./data/wp:/var/www/html #volume pour préserver les données de wordpress
db:
image: mysql:5.7
environment:
- MYSQL_ROOT_PASSWORD=tata_yoyo #mot de passe root de la base de données
- MYSQL_DATABASE=wordp #nom de la base de données
- MYSQL_USER=tata #utilisateur de la base de données
- MYSQL_PASSWORD=yoyo #mot de passe de l'utilisateur de la base de données
networks:
- galaxie
volumes:
- ./data/db:/var/lib/mysql
#volumes: #à ce stade la section volume sera utilisée plus tard
networks:
galaxie: #création réseau bridgé cloné
Tapez la commande pour recréer l'environnement et la nouvelle installation de wordpress
docker-compose up -d
Donc en tapant la commande docker-compose down, les conteneurs seront arrêtés et supprimés mais les données conservées dans le volume spécifié (ici le /data)
Voyons maintenant le comportement avec les volumes managés
Editons de nouveau le fichier docker-compose.yml
version: "3.8"
services: #nom du conteneur
wordpress:
image: wordpress:4.9 #image à téléchager sur le docker hub avec le tag
ports:
- 80:80 #ports à ouvrir entre l'hôte et le conteneur
environment: #variables d'environnements nécessaires pour la création du conteneur prises sur le docker hub www.hub.docker.com
- WORDPRESS_DB_HOST=db #nom du conteneur de la base de données
- WORDPRESS_DB_USER=tata #utilisateur qui aura été créé plus bas
- WORDPRESS_DB_PASSWORD=yoyo #mot de passe de l'utilisateur de la base de données
- WORDPRESS_DB_NAME=wordp #nom de la basse de données
networks:
- galaxie #nom du réseau auquel sera connecté le conteneur
volumes:
- wp:/var/www/html #volume pour préserver les données de wordpress
db:
image: mysql:5.7
environment:
- MYSQL_ROOT_PASSWORD=tata_yoyo #mot de passe root de la base de données
- MYSQL_DATABASE=wordp #nom de la base de données
- MYSQL_USER=tata #utilisateur de la base de données
- MYSQL_PASSWORD=yoyo #mot de passe de l'utilisateur de la base de données
networks:
- galaxie
volumes:
- db:/var/lib/mysql
volumes: #ici ce sont des volumes managés que vous modifierez plus haut
wp:
db:
networks:
galaxie: #création réseau bridgé cloné
Et nous relançons la commande suivant pour recréer les conteneurs avec les volumes managés
docker-compose up
Pas de surprise tout fonctionne et on repart sur une nouvelle installation de wordpress
Arrêtons le tout et voyons si les volumes ont bien été créés
sudo docker volume ls
En faisant un docker-compose down, les conteneurs seront supprimés mais pas les volumes
Cependant il est possible de forcer la suppression de ces volumes
docker-compose down -v
Cela supprime les volumes managés créés à partir du docker-compose.yml mais pas les autres volumes managés créés avec docker
Pour finir, il est possible de modifier un paramètre dans le fichier docker-compose.yml en cas d'arrêt ou redémarrage de docker.
Il s'agit de restart:
restart: always #permet de redémarrer automatiquement le conteneur quel que soit l'état dans lequel il était avant l'arrêt ou le redémarrage de docker
restart: no #empêche de redémarrer automatiquement le conteneur quel que soit l'état dans lequel il était avant l'arrêt ou le redémarrage de docker
restart: unless-stopped #permet de redémarrer automatiquement le conteneur s'il était démarré avant l'arrêt ou le redémarrage de docker













No comments to display
No comments to display