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