Docker-compose
Exercice 2 : Docker-compose
Votre responsable vous propose un nouveau défi ! Celui-ci voudrait créer un nouveau blog pour votre entreprise qui a besoin d’un serveur LAMP (Linux+Apache+MySQL+PHP) . Pour cela, il souhaite utiliser une architecture sous Docker.
Ce docker-compose doit crer les conteneurs nécessaires pour un environnement de développement LAMP (Linux, Apache, MySQL, PHP) avec phpMyAdmin pour la gestion de la base de données MySQL

Voici donc la liste des conteneurs que nous souhaitons créer :
un conteneur PHP
un conteneur MySQL
un conteneur PHPMyAdmin : conteneur pour le confort d’administration de la base de données.
Pour décrire la configuration de ces différents conteneurs ainsi que leur interaction, Docker Compose se base sur un fichier de configuration au format YAML. Voici le squelette que nous allons utiliser (fichier docker-compose.yml) :
Copy
# Conteneur PHP nommé php
php:
# Description du conteneur
# Conteneur MySQL nommé db (database)
db:
# Description du conteneur
# Conteneur PhpMyAdmin nommé phpmyadmin
phpmyadmin:
# Description du conteneur
Il ne vous reste plus qu'à créer le fichier docker-compose.yml
qui convient, pour faire trois services : un serveur web avec PHP
, un serveur de base de données MySQL
et un conteneur phpMyAdmin
. Le serveur web est accessible depuis le port 80
et stocke ses fichiers web localement dans le répertoire /data/lamp/php
. Le serveur MySQL
est accessible depuis le port 3306
et stocke sa base de données localement dans le répertoire /data/lamp/db
. Le conteneur phpMyAdmin
est accessible depuis le port 8181
.
Une fois cette configuration réalisée, installez DRUPAL dans votre infrastructure LAMP et effectuez une sauvegarde complète des répertoires de votre serveur LAMP.
Livrable attendu : Le fichier
docker-compose.yml
décrivant votre configuration de Docker Compose pour faire fonctionner le serveur LAMP + la sauvegarde des volumes et le script permettant leur restauration.
nano docker-compose.yml
services:
php:
image: php:7.4-apache
container_name: php
ports:
- "80:80"
volumes:
- /data/lamp/php:/var/www/html
restart: always
db:
image: mysql:5.7
container_name: db
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: lamp_db
MYSQL_USER: cpnv
MYSQL_PASSWORD: password
volumes:
- /data/lamp/db:/var/lib/mysql
restart: always
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: phpmyadmin
ports:
- "8181:80"
environment:
PMA_HOST: db
PMA_PORT: 3306
PMA_USER: cpnv
PMA_PASSWORD: password
depends_on:
- db
restart: always
volumes:
php_data:
db_data:


Last updated