Docker: Configurer une application avec Apache, PHP et MySQL

Par:

DSC08688

Mehdi Laderiere

Développeur Web Junior, l’un de nos Super-héros du digital de la Team BGS, nous parle de Docker et comment configurer une application.

 

Docker, c'est quoi?

Docker est un logiciel libre offrant la possibilité d’empaqueter à l’intérieur de containers des applications et leurs dépendances, ainsi que de lancer ces applications, tout cela depuis n’importe quel serveur.

Docker peut par exemple s’avérer être très pratique lorsque plusieurs développeurs souhaitent partager le même environnement de développement et ainsi garder une certaine uniformité.

Dans cet article nous allons voir comment utiliser Docker de telle sorte à exécuter une application multi-containers regroupant : Apache, php et MySQL.

Créer l'architecture de l'application Docker

ETAPE 1: Docker-compose.

  • Créer un dossier qui portera le nom du projet ( ici dev-web ) puis créer un fichier docker-compose.yml.

Docker-compose.yml : Il permet de définir des containers dans le but de configurer les différents services de notre application.

  • Placer ce contenu dans le fichier docker-compose.yml.

Ici nous avons défini deux containers :

  • php_apache : Qui nous permet d’installer apache couplé à php par l’intermédiaire d’un ( nous reviendrons sur ce terme ci-dessous )
  • mysql : Qui nous permet d’installer le système de gestions de bases de données relationnelles

Dans le docker-compose on peut donc monter des containers directement via des images officielles tirées de docker hub pour cela il suffit juste de renseigner le nom de l’image, ou alors on peut utiliser un Dockerfile qui nous permet de spécifier des lignes de commandes en plus de l’image à utiliser. C’est précisément ce que nous allons effectuer afin d’installer la dépendance mysqli de php pour interfacer le php avec mysql.

 

Pour plus d’infos sur le fichier docker-compose.yml voici la documentation.

ETAPE 2: Dockerfile.

Créer un répertoire php à la racine du projet.

Dans le dossier php créer le fichier ( attention à ne pas mettre d’extension au fichier )

Placer ce contenu et sauvegarder.

 

Pour plus d’infos sur le fichier Dockerfile voici la documentation.

Lancer l'application Docker

  • Ouvrez le terminal docker, placez-vous dans le répertoire « dev-web ».
  • Exécuter la commande docker-compose up –build -d .

Si tout s’est bien passé, « done » apparaît après la création de chaque container comme sur l’image ci-contre.

 

A l’aide de la commande docker ps vous pouvez vérifier le statut de vos containers.

A noter que si vous souhaitez arrêter l’exécution de vos containers vous pouvez utiliser la commande docker-compose down.

Bien vérifions maintenant que les services sont fonctionnels ! Pour cela il nous suffit de nous connecter à nos containers fraîchement construits et opérationnels, voici la commande à exécuter: docker exec -it nomducontainer bash

Tester PHP :

  • 1 ) Dans docker, entrez la commande docker exec -it php8_0_2_apache bash.
  • 2 ) Entrez la commande php -v qui a pour effet de nous indiquer notre version de php.

Ici le terminal nous renvoie bien à la version de PHP que nous avons installé, notre PHP est maintenant opérationnel.

La commande exit nous permet de quitter le container.

Tester la connexion à Mysql :

  • Dans docker, entrez la commande docker exec -it mysql_ bash.
  • Connectez-vous à mysql avec la commande mysql -uroot -p12345. -u est un paramètre qui attends le nom d’utilisateur et -p le mot de passe que nous avions définis plus tôt dans notre docker-compose.yml.

Une petite démonstration

Dans le répertoire php de notre application nous allons créer un fichier que nous nommerons index.php où nous allons placer le contenu suivant :

Afin d’executer notre code php, récupérons l’ip de notre host à l’aide de la commande docker-machine ls

Ouvrez un navigateur internet saisissez l’adresse «  http://votreipdocker:8000 pour voir le résultat.

Félicitations vous disposez maintenant d’une application avec Apache, Php et Mysql sous docker !