21-03-2025, 19:34
(Modification du message : 12-06-2025, 13:59 par Marco.
Raison de la modification: en -> fr pour le wikijs
)
Version plus agréable à lire disponible sur ce lien
Introduction
DAMP est un environnement de développement web basé sur Docker qui fournit un serveur Apache avec PHP, une base de données MySQL et phpMyAdmin pour la gestion de la base de données. Ce projet permet aux développeurs de travailler sur une application web localement avec une configuration reproductible et facile à déployer.
Prérequis
Avant d'utiliser ce projet, assurez-vous d'avoir installé :
- Docker
- Docker Compose
Un tutoriel détaillé pour installer Docker & Docker Compose sur Debian 12 est disponible ici.
Fichiers du projet
Ce projet repose sur trois fichiers principaux :
- docker-compose.yml
Ce fichier définit l'orchestration des services Docker nécessaires à l'exécution de l'environnement DAMP. Il permet de lancer l'ensemble des conteneurs avec une seule commande et assure la communication entre eux.
Code :version: '3.8'
services:
web: # Service 'web' pour le serveur web (PHP + Apache)
build: . # Construction de l'image Docker à partir du Dockerfile à la racine du répertoire (.)
container_name: php-apache
restart: always # Assurer que le conteneur redémarre automatiquement en cas d'échec ou lors du redémarrage du système
volumes:
- .:/var/www/html # Le répertoire local '.' (répertoire courant) sera monté dans le répertoire '/var/www/html' du conteneur
ports:
- "8080:80" # Mapping des ports : rediriger le port 80 du conteneur vers le port 8080 de l'hôte
depends_on:
- db # Ce service dépend du service 'db', c'est-à-dire qu'il sera lancé après ce dernier
networks:
- app-network # Définir le réseau utilisé pour ce service, dans ce cas 'app-network'
db: # Service 'db' pour la base de données MySQL
image: mysql:8 # Utilisation de l'image officielle de MySQL version 8
container_name: mysql-db
restart: always
env_file: # Chargement d'un fichier d'environnement contenant des variables comme les identifiants de la base de données
- .env # Fichier '.env' à la racine, contenant les variables d'environnement nécessaires
volumes:
- ./db/dump.sql:/docker-entrypoint-initdb.d/dump.sql # Charge le fichier dump.sql présent dans le dossier "db" pour initialiser la base de données
- ./db/data:/var/lib/mysql # Persister les données de la base de données sur le système hôte
ports:
- "3306:3306" # Mapping des ports : rediriger le port 3306 du conteneur vers le port 3306 de l'hôte
networks:
- app-network
phpmyadmin: # Service 'phpmyadmin' pour l'interface web phpMyAdmin de gestion de la base de données
image: phpmyadmin/phpmyadmin # Utilisation de l'image officielle phpMyAdmin
container_name: phpmyadmin
restart: always
depends_on:
- db
environment:
- PMA_HOST=db # Adresse de la base de données (nom du service 'db')
- PMA_USER=${MYSQL_USER} # Utilisateur pour la connexion à MySQL (défini dans le fichier .env)
- PMA_PASSWORD=${MYSQL_PASSWORD} # Mot de passe pour la connexion à MySQL (défini dans le fichier .env)
ports:
- "8081:80" # Mapping des ports : rediriger le port 80 du conteneur vers le port 8081 de l'hôte
networks:
- app-network
networks: # Définition des réseaux à utiliser entre les services
app-network: # Création d'un réseau personnalisé appelé 'app-network'
driver: bridge # Spécifie que le type de réseau est 'bridge' (réseau par défaut dans Docker)
- Dockerfile
Ce fichier contient les instructions nécessaires pour construire l'image du conteneur web (serveur Apache avec PHP). Il installe les extensions PHP requises, active le module mod_rewrite d'Apache et applique les configurations nécessaires.
Code :# Utiliser l'image officielle PHP avec Apache
FROM php:8.2-apache
# Activer les extensions PHP nécessaires
RUN docker-php-ext-install mysqli pdo pdo_mysql # Installe les extensions PHP mysqli, pdo et pdo_mysql pour la gestion de bases de données MySQL
# Activer le module Apache mod_rewrite (utile pour les réécritures d'URL)
RUN a2enmod rewrite
# Copier la configuration personnalisée d'Apache dans le conteneur
COPY apache-config.conf /etc/apache2/sites-available/000-default.conf # Remplacer la configuration Apache par celle définie dans 'apache-config.conf'
# Définir le répertoire de travail à l'intérieur du conteneur
WORKDIR /var/www/html # Ce répertoire sera utilisé comme répertoire de travail pour les commandes suivantes
# Copier tous les fichiers du projet dans le conteneur
COPY . /var/www/html/ # Copier tous les fichiers du projet (répertoire local) dans le répertoire de travail du conteneur
# Définir les permissions appropriées pour les fichiers copiés (assurer que l'utilisateur www-data ait accès)
RUN chown -R www-data:www-data /var/www/html/ # Changer le propriétaire des fichiers et répertoires pour 'www-data' (utilisé par Apache)
# Exposer le port 80 pour accéder au serveur web depuis l'extérieur du conteneur
EXPOSE 80 # Le conteneur écoutera sur le port 80 pour les requêtes HTTP
- apache-config.conf
Ce fichier définit la configuration d'Apache pour s'assurer que le serveur web fonctionne correctement. Il définit le répertoire racine du site (DocumentRoot), active la réécriture des URLs (AllowOverride All) et configure les logs du serveur.
Code :<VirtualHost *:80>
DocumentRoot /var/www/html/public #Remplacer le /public par le répertoire ou se trouve votre index.php
<Directory /var/www/html/public> #Remplacer le /public par le répertoire ou se trouve votre index.php
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
- .env
Ce fichier contient les variables d'environnement utilisées pour configurer la base de données MySQL.
Code :MYSQL_ROOT_PASSWORD=pwd # Mot de passe root de votre MySQL
MYSQL_DATABASE=alf # Nom de votre base de donnés
MYSQL_USER=alf_user # Nom d'utilisateur de votre bdd
MYSQL_PASSWORD=pwd # Mot de passe de votre utilisateur
Installation et utilisation
Pour que l'environnement DAMP fonctionne correctement, il est essentiel de respecter une structure de dossier claire et complète. Voici l'architecture attendue, illustrée avec l'exemple du projet fictif Alf :
Exemple de structure
Code :
Alf/
├── public/
│ ├── index.php # Fichier principal de l'application web
│ └── about.php # Exemple de page supplémentaire
├── db/
│ └── dump.sql # Fichier SQL pour initialiser la base de données
├── config/
│ └── app.php # Fichier de configuration de l'application (optionnel)
├── .env # Fichier des variables d'environnement
├── apache-config.conf # Configuration personnalisée d'Apache
├── docker-compose.yml # Fichier d'orchestration des services Docker
└── Dockerfile # Instructions pour construire l'image du serveur webExplication de la structure
À la racine du projet, on retrouve les quatre fichiers essentiels : .env, apache-config.conf, docker-compose.yml et Dockerfile. Ces fichiers sont indispensables pour configurer et lancer l'environnement.
Le dossier public/ contient les fichiers de l'application web, notamment index.php, qui sert de point d'entrée principal.
Le dossier db/ inclut dump.sql, un fichier SQL utilisé pour initialiser la base de données MySQL lors du premier lancement. Sans ce fichier, la base de données ne sera pas préremplie.
Le dossier config/ est optionnel et peut contenir des fichiers de configuration spécifiques à l'application (comme app.php dans cet exemple).
Le site web, avec ses dossiers et fichiers, doit être déposé dans cette structure avant de lancer l'environnement.
Assurez-vous que tous ces éléments soient présents avant de procéder au lancement, en particulier les fichiers de configuration et le dump de la base de données.
Lancement de l'environnement
Une fois la structure du dossier prête, suivez ces étapes pour mettre en route l'environnement DAMP :
Ouvrez un terminal et placez-vous à la racine du projet (là où se trouve docker-compose.yml).
Exécutez la commande suivante pour démarrer les conteneurs :
Code :
docker-compose upCette commande construit les images (si nécessaire) et lance les services définis dans docker-compose.yml.
Pour lancer les services en mode détaché (en arrière-plan), ajoutez l'option -d :
Code :
docker-compose up -dArrêt de l'environnement
Si vous avez lancé les services en mode interactif (sans -d), pressez CTRL+C dans le terminal pour arrêter les conteneurs.
Si les services tournent en mode détaché, utilisez la commande suivante pour les arrêter et supprimer les conteneurs :
Code :
docker-compose downAccès aux services
Une fois les conteneurs lancés, vous pouvez accéder aux services via les URL suivantes :
- Application web : http://localhost:8080
- phpMyAdmin : http://localhost:8081


![[-]](https://www.tisi-fr.com/board/images/collapse.png)