Aller au contenu

2 - Docker Compose et DockerFile (Apache, PHP, MySQL)

DevOps & Outils

Dans ce tutoriel, nous allons explorer Docker Compose et Dockerfile pour configurer un environnement Docker contenant PHP 8.2 avec Apache, MySQL, et PhpMyAdmin. Nous apprendrons à construire un environnement complet pour exécuter un projet PHP.

Étape 1 : Initialisation du projet

Créer un dossier de projet :

mkdir mon_projet_docker && cd mon_projet_docker

Créer le fichier docker-compose.yaml : Ce fichier est au cœur de la configuration de vos conteneurs Docker.

Exemple :

services:
php:
image: php:8.2-apache
container_name: php_82
ports:
- 8000:80
volumes:
- ./php:/var/www/html
db:
image: mysql:8.0
container_name: mysql_8
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: demo
MYSQL_USER: user
MYSQL_PASSWORD: password
ports:
- "3307:3306"
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: phpmyadmin
environment:
PMA_HOST: db
MYSQL_ROOT_PASSWORD: rootpassword
ports:
- "8080:80"

Explications :

  • PHP avec Apache : Configure un serveur PHP accessible sur le port 8000.
  • MySQL : Base de données accessible localement sur le port 3307.
  • PhpMyAdmin : Interface web pour gérer MySQL, accessible via http://localhost:8080.

Créer un dossier pour PHP et y ajouter un fichier index.php :

<?php
echo "Bonjour, Docker !";

Étape 2 : Démarrer les services avec Docker Compose

Lancer les conteneurs :

docker-compose up
  • Docker télécharge les images nécessaires.
  • Les services démarrent.

Vérifier les conteneurs actifs :

docker ps

Accéder aux services :

  • PHP : http://localhost:8000
  • PhpMyAdmin : http://localhost:8080

Étape 3 : Personnalisation avec Dockerfile

Pour configurer PHP avec des extensions supplémentaires comme PDO et mysqli :

Créer un fichier Dockerfile :

FROM php:8.2-apache
RUN apt-get update && apt-get install -y \
libpq-dev \
&& docker-php-ext-install pdo pdo_mysql mysqli

Modifier docker-compose.yaml pour utiliser le Dockerfile :

php:
image: php:8.2-apache
container_name: php_82
ports:
- 8000:80
volumes:
- ./php:/var/www/html
build:
context: .
dockerfile: Dockerfile

Recréer l'image et redémarrer.

Étape 4 : Test avec une base de données MySQL

Ajouter un fichier connect.php dans le dossier php :

<?php
$host = 'db';
$db = 'demo';
$user = 'user';
$pass = 'password';
$dsn = "mysql:host=$host;dbname=$db;charset=utf8mb4";

try {
$pdo = new PDO($dsn, $user, $pass);
echo "Connexion réussie !";
} catch (PDOException $e) {
echo "Erreur de connexion : " . $e->getMessage();
}

Accéder à http://localhost:8000/connect.php.

Étape 5 : Administration avec PhpMyAdmin

Accéder à PhpMyAdmin : http://localhost:8080.

Identifiants de connexion :

  • Serveur : db
  • Utilisateur : user
  • Mot de passe : password

Créer une table et insérer des données :

  • Table : clients
  • Colonnes : id, nom, email.

Obtenir de l'aide

Pour obtenir de l'aide, vous pouvez accéder au serveur Discord pour une entraide par chat.