EP2-Training
Vous disposez d’une application PHP existante de télégraphe :
L’utilisateur clique une image de télégraphe.
Le JavaScript client code les impulsions en bits (0 ou 1) selon la durée.
Le backend PHP reçoit la requête et enregistre les données en base de données.
Votre mission : conteneuriser et exécuter cette application à l’aide de Docker Compose, avec :
Nginx pour le frontal web,
PHP-FPM pour le backend,
MySQL pour la persistance.
Merci de commencer par télécharger ces ressources :
📥 Télegraphe à dockeriser (ZIP) 📥 Nginx config file (CONF) (⚠️ à renommer en default.conf après télechargement) 📥 PHP initialisation file (INI)
Spécifications techniques
1. Service db (MySQL)
Image :
mysql:latestVariables d’environnement :
MYSQL_DATABASE=db_telegraphMYSQL_ROOT_PASSWORD=rootd’autres variables ?
Volume nommé :
db_data:/var/lib/mysqlRéseau :
backendRedémarrage :
alwaysHealthcheck :
healthcheck: test: ["CMD-SHELL", "mysql -h 127.0.0.1 -u $$MYSQL_USER --password=$$MYSQL_PASSWORD -e 'USE db_telegraph;'"] interval: 5s timeout: 10s retries: 5
2. Service php (PHP-FPM)
Image :
php:8.2-fpmExtensions requises :
pdo,pdo_mysql(ou installation via
docker-php-ext-install pdo pdo_mysql)
Copie du code backend :
/var/www/html/api/Variables d’environnement :
DB_HOST=dbDB_PORT=3306DB_NAME=db_telegraphDB_USER=rootDB_PASSWORD=root
Réseaux :
backendRedémarrage :
alwaysDépendances :
depends_on: db: condition: service_healthy
le fichier php.ini doit être copié et renommé vers cet emplacement :
/usr/local/etc/php/conf.d/z-app.ini
3. Service nginx (reverse proxy + statique)
Image :
nginx:1.27-alpinePorts exposés :
80:80Réseau :
frontend,backendDépend de
phpRedémarrage :
alwaysCopie des fichier
default.confdans/etc/nginx/conf.d/default.confCopie des fichiers clients dans
/usr/share/nginx/html/
4. Réseaux et volumes
Un réseau frontend et un réseau backend doivent être créés.
Un volume nommé db_data doit permettre la persistance de la base de données.
Endpoints attendus
Interface utilisateur :
GET /affiche l’image du télégraphe et le script JS.Interface utilisateur :
GET /api/test_db_connection.phpinitie un test de connection à la base de données.
Travail demandé
Écrire le fichier
docker-compose.ymlcomplet selon les spécifications.Fournir les fichiers nécessaires :
php/Dockerfilenginx/default.confapp/avec votre code télégraphe.
Démarrer la stack et vérifier :
l’accès via
http://localhostl’accès via
http://localhost/api/test_db_connection.php
Vérifier la persistance après
docker compose down && docker compose up.
Livrables
docker-compose.ymlphp/DockerfileCaptures dans un dossier
captures/:ui.png— interface du télégraphepost_ok.png— réponse du backend après envoilast_message.png— lecture des donnéesdocker_ps.pngpersistence.png
Critères de réussite
Application accessible via Nginx
API PHP opérationnelle (
/api/test_db_connection.php)Données persistantes après redémarrage
Volume et réseaux configurés
Healthcheck DB et dépendances fonctionnels
Structure
docker-compose.ymlpropre et lisible