Outils pour utilisateurs

Outils du site


reseau:docker:lampdockercompose

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

Présentation

Docker permet la création de conteneurs en proposant les fonctionnalités suivantes :

  • création de conteneur personnalisé en utilisant un fichier Dockerfile ;
  • exposition d'un service en choisisant le port local de l'ordinateur ;
  • gestion de la persistance des données en gérant des volumes ;
  • liaison des conteneurs entre eux quand une architecture en microservices, utilise un conteneur spécifique par service (service Web, service de base de donés, etc.)

Cependant :

  • La création d'un conteneur nécessite alors plusieurs paramèters lors de son lancement.
  • Il faut lancer manuellement les conteneurs et les uns après les autres.

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 :

  • Conteneur Docker php (serveur Web) personnalisé pour gérer les accès en php à la base de données MariaDB ;
  • Conteneur Docker mariadb (base de données) ;
  • Conteneur Docker phpmyadmin (site Web d'administration de la base de données).

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 :

  • Le mot-clé service : permet de définir les différents conteneurs qui seront activés.
  • L'instruction image : permet de préciser l'imagfe à utiliser pour créer le conteneur
  • L'instruction depends_on : permet de définir le lien avec un autre conteneur
  • L'instruction volume : met en œuvre le mécanisme de persistance des données
  • L'instruction ports : met de préciser le port local d'écoute du service
  • L'instruction environment : permet de définir des variables d'environnement dans le conteneur

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

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

  • nom du conteneur : servbdd
  • base de données en écoute sur le port par défaut : 3306 ;
  • mot de passe du compte root de MariaDB précisé dans une variable d’environnement MARIADB_ROOT_PASSWORD : MARIADB_ROOT_PASSWORD: passwordmariadb ;
  • dossier local pour la persistance des bases de données du conteneur : c:\www\html\siteweb-bdd

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 :

  • nom du conteneur : phpmyadmin
  • port local d'écoute pour accéder au site Web phpmyadmin : 8080 ;
  • liaison avec le conteneur servbdd en renseignant le nom du serveur MariaDB dans la variable d'environnement PMA_HOST : 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 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 :

  • nom du conteneur : servweb
  • image Docker personnalisée (basé sur l'image php:8.1-apache) : ctecher/php-mariadb.
  • mappage du site Web sur le port local : 8001 ;
  • dossier local contenant les fichiers du site Web : c:\www\html\siteweb;
  • dossier local pour la persistance des logs du serveur Apache : c:\www\log ;

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

reseau/docker/lampdockercompose.txt · Dernière modification: 2023/04/17 17:56 de techer.charles_educ-valadon-limoges.fr