Table des matières

Activité : créer un environnement LAMP avec Docker-Compose

Présentation

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.)

Objectif

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.

Syntaxe du fichier docker-compose.yml

Un fichier docker-compose.yml doit être créé avec les instructions nécessaires dont voici celles qui sont à utiliser :

Commandes Docker et Docker-compose de création des trois conteneurs

Création du serveur de base de données MariaDB

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

Création du conteneur phpmyadmin :

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 

Création du serveur Web avec les paramètres suivants :

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
 

Le fichier docker-compose.yml complet de l'architecture LAMP

docker-compose.yml
version: '3'
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

services   servbdd   phpmyadmin   servweb   imagemariadbvolumes   environment   c:\www\htmlolark-bdd:/var/lib/mysqlMARIADB_ROOT_PASSWORDpasswordmariadbimagephpmyadmindepends_on   ports   environment   servbdd   808080PMA_HOSTservbddimagecharles/phpdepends_on   ports   volumes   servbdd   800180c:\www\htmlolark:/var/www/htmlc:\www\htmlolark_logs:/var/log/apache2

Exécution des commandes du fichier docker-compose.yml

La commande docker-compose doit être lancée dans le dossier où se trouve le fichier docker-compose.yml.

Lancement de tous les conteneurs avec Docker-compose

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

Arrêt de tous les conteneurs avec Docker-compose

docker-compose down

Activité à faire

Mission :

  • Créer un fichier docker-compose.yml qui permet de créer un site Wordpress avec la base de données MariaDB.

Voici les variables d'environnement nécessaires pour le conteneur MariaDB :

  • MARIADB_ROOT_PASSWORD: passwordmariadb
  • MARIADB_DATABASE: wordpress
  • MARIADB_USER: wordpress
  • MARIADB_PASSWORD: wordpress

Voici les variables d'environnement nécessaires pour le conteneur Wordpress :

  • WORDPRESS_DB_HOST: servbdd
  • WORDPRESS_DB_NAME: wordpress
  • WORDPRESS_DB_USER: wordpress
  • WORDPRESS_DB_PASSWORD: wordpress

Retour Accueil Docker