Docker permet la création de conteneurs en proposant les fonctionnalités suivantes :
Cependant :
Docker-compose est donc un outil permettant de créer et de lancer des architectures avec plusieurs conteneurs en une seule commande.
L'architecture à lancer est décrite au préalable dans un seul fichier au format YAML qui contient toute la configuration nécessaire pour chacun des conteneurs (port exposé, volume à gérer, etc.)
Réaliser le même environnement LAMP avec 3 conteneurs en utilisant Docker-compose :
Les fichiers du site Web et de la base de données sont enregistrés en local en utilisant le principe des volumes de Docker.
Un fichier docker-compose.yml doit être créé avec les instructions nécessaires dont voici celles qui sont à utiliser :
Voici les paramètres de la commande Docker et les équivalents à écrire dans le fichier Docker-compose.yml
| Docker | Docker-compose.yml |
|---|---|
docker run -d --name servbdd -v c:\www\html\siteweb-bdd:/var/lib/mysql -e MARIADB_ROOT_PASSWORD=passwordmariadb mariadb | services:
servbdd:
image: mariadb
volumes:
- c:\www\html\siteweb-bdd:/var/lib/mysql
environment:
MARIADB_ROOT_PASSWORD: passwordmariadb
|
Voici les paramètres de la commande Docker et les équivalents à écrire dans le fichier Docker-compose.yml
| Docker | Docker-compose.yml |
|---|---|
docker run -d --name phpmyadmin --link servbdd:servbdd -p 8080:80 -e PMA_HOST=servbdd phpmyadmin | services:
phpmyadmin:
image: phpmyadmin
depends_on:
- servbdd
ports:
- 8080:80
environment:
PMA_HOST=servbdd
|
Voici les paramètres de la commande Docker et les équivalents à écrire dans le fichier Docker-compose.yml
| Docker | Docker-compose.yml |
|---|---|
docker run -d --name servweb --link servbdd:servbdd -p 8001:80 -v c:\www\html\siteweb:/var/www/html -v c:\www\log:/var/log/apache2 charles/php | services:
servweb:
image: ctecher/php-mariadb
depends_on:
- servbdd
ports:
- 8001:80
volumes:
- c:\www\html\siteweb:/var/www/html
- c:\www\log:/var/log/apache2
|
services:
# base de données MariaDB
servbdd:
image: mariadb
volumes:
- c:\www\html\nolark-bdd:/var/lib/mysql
environment:
MARIADB_ROOT_PASSWORD: passwordmariadb
# site Web phpmyadmin
phpmyadmin:
image: phpmyadmin
depends_on:
- servbdd
ports:
- 8080:80
environment:
PMA_HOST: servbdd
# site Web
servweb:
image: ctecher/php-mariadb
depends_on:
- servbdd
ports:
- 8001:80
volumes:
- c:\www\html\nolark:/var/www/html
- c:\www\html\nolark_logs:/var/log/apache2
<uml> @startyaml services:
# base de données MariaDB
servbdd:
image: mariadb
volumes:
- c:\www\html\nolark-bdd:/var/lib/mysql
environment:
MARIADB_ROOT_PASSWORD: passwordmariadb
# site Web phpmyadmin
phpmyadmin:
image: phpmyadmin
depends_on:
- servbdd
ports:
- 8080:80
environment:
PMA_HOST: servbdd
# site Web
servweb:
image: charles/php
depends_on:
- servbdd
ports:
- 8001:80
volumes:
- c:\www\html\nolark:/var/www/html
- c:\www\html\nolark_logs:/var/log/apache2
@endyaml </uml>
La commande docker-compose doit être lancée dans le dossier où se trouve le fichier docker-compose.yml.
docker-compose up -d
Résultat de la commande :
PS C:\www\html> docker-compose up -d [+] Running 4/4 - Network html_default Created 0.1s - Container html-servbdd-1 Started 1.0s - Container html-phpmyadmin-1 Started 1.8s - Container html-servweb-1 Started 1.9s
docker-compose down
Mission :
Voici les variables d'environnement nécessaires pour le conteneur MariaDB :
Voici les variables d'environnement nécessaires pour le conteneur Wordpress :