Aller au contenu

Introduction à Docker compose

La nous allons voir plusieurs concept en même temps ! préparez le doliprane 1000mg 😼

Pour commencer simplement nous allons monter un Wordpress avec sa base de donnée qui va bien !

Wordpress :

Rendez-vous sur le docker hub de wordpress officiel !

https://hub.docker.com/_/wordpress

Untitled

Un peu plus bas on vois une section Docker compose :

Untitled

On vois plusieurs éléments, dont une image wordpress et une mysql. Je vais copier ce code dans VSCode est vous le commenter.

# Version de docker compose utilisée
version: '3.7'
## Définition des services, un services sera un conteneur, une application par conteneur !s
services:
## Définition du service wordpresss
wordpress:
## Image utilisée pour le conteneur, ici nous récupérons la dernière version de wordpresss
image: wordpress
## Redémarrage du conteneur en cas de crash, redemarrage de l'hôte, etc...
restart: always
## Définition du nom du conteneur, ici wordpress,
## l'hote ne connais pas le nom mais les autres conteneurs ouis
container_name: wordpress
## Exposition du port 80 du conteneur vers le port 8080 de l'hôtes
ports:
- 8080:80
## Ici on déclare une liaison avec la base de données,
## pour s'assurer que le conteneur db est bien démarré avant le conteneur wordpress
depends_on:
## Nom du service sur lequel on dépend, ici db
- db
## Définition des variables d'environnement pour le conteneur, ici nous définissons les informations de connexion à la base de données
environment:
## Nom de l'hôte de la base de données
WORDPRESS_DB_HOST: db
## Nom d'utilisateur de la base de données
WORDPRESS_DB_USER: user-wordpress
## Mot de passe de l'utilisateur de la base de donnéess
WORDPRESS_DB_PASSWORD: password-wordpress
## Nom de la base de données
WORDPRESS_DB_NAME: wordpressdb
## Définition des volumes pour avoir des données persistante après le redémarrage
volumes:
## En premier on indique le dossier de l'hôte qui sera monté dans le conteneur
## En second on indique le dossier du conteneur dans lequel on va monter le dossier de l'hôtes
## On peux voir cela comme un lien symboliques
- ./data_wps:/var/www/html
## Définition du service de la base de donnéess
db:
## Image utilisée pour le conteneur, ici nous récupérons la dernière version de mysqls
image: mysql:5.7
## Redémarrage du conteneur en cas de crash, redemarrage de l'hôte, etc...s
restart: always
## Définition du nom du conteneur, ici mysql
container_name: mysql
## Définition des variables d'environnement pour le conteneur, ici nous définissons les informations de connexion à la base de données
environment:
## Nom de la base de données
MYSQL_DATABASE: wordpressdb
## Nom d'utilisateur de la base de données
MYSQL_USER: user-wordpress
## Mot de passe de l'utilisateur de la base de données
MYSQL_PASSWORD: password-wordpress
## Définition du mot de passe root de la base de données
MYSQL_RANDOM_ROOT_PASSWORD: '1'
## Définition des volumes pour avoir des données persistante après le redémarrage
volumes:
## Création d'un disque virtuel 'db' pour stocker les données de la base de données
## on utilise un disque virtuel pour des raisons de performances avec les DB
- db:/var/lib/mysql
## Définition des volumes
volumes:
## Définition du volume 'db' qui sera utilisé par le service db
## Les {} sans arguments laisse docker choisir le nom du volume et gérer les différents options
db: {}

Petit docker compose up, sans le D cette fois histoire de voir les logs en direct !

Si on observe bien les logs on voit que le démarrage de wordpress ne se fait que lorsque que mysql est prêt ! merci l’option depends_on !

Untitled

On fait un petit docker ps pour voir nos conteneur.

Untitled

Ici on peux voir que nos conteurs sont bien lancé depuis X temps. On peux voir que wordpress accepte la connexion de toutes les IPs sur le port 8080 et renvoie dans le conteneur sur le port 80.

On aperçois aussi le port 3306 sur le conteneur mysql, pourtant nous avons pas indiqué d’argument ?

Ouvrez le votre navigateur et allez sur http://localhost:8080

Et voici notre Wordpress :

Untitled

Continuez l’installation jusqu’a finir sur la page de connexion et ensuite le tableau de bord.

Untitled

Maintenant nous allons rajouter un service à notre docker compose !

PhpMyAdmin va nous permettre de voir les tables de notre base de données et de la managé si besoin. (Attention ! Ne jamais utilise ce type de méthode en production !)

Voici le services à ajouter dans le docker compose :

## Définition du service phpmyadmin
phpmyadmin:
## Image utilisée pour le conteneur, ici nous récupérons la dernière version de phpmyadmin
image: phpmyadmin
## Redémarrage du conteneur en cas de crash, redemarrage de l'hôte, etc...
restart: always
## Définition du nom du conteneur, ici phpmyadmin
container_name: phpmyadmin
## Expostion du port 80 du conteneur vers le port 8000 de l'hôte
ports:
- 8000:80
## Définition des variables d'environnement pour le conteneur, ici nous définissons les informations de connexion à la base de données
environment:
## Utilisateur de la base de données
- PMA_USER=user-wordpress
## Mot de passe de l'utilisateur de la base de données
- PMA_PASSWORD=password-wordpress
## Ici on déclare une liaison avec la base de données,
## pour s'assurer que le conteneur db est bien démarré avant le conteneur phpmyadmin
depends_on:
## Nom du service sur lequel on dépend, ici db
- db

Untitled

Untitled

Maintenant sur localhost:8000 nous avons de quoi administrer plus facilement notre base de données !

Untitled