Aller au contenu principal

PHP avec Nginx

PHP-FPM + Nginx (2 conteneurs)

Objectif

Ce TP vous fait manipuler une stack PHP professionnelle dans Docker, avec :

  • PHP 8.4 + PHP-FPM (traitement des scripts PHP)
  • Nginx (serveur web statique + reverse proxy)
  • Volume partagé pour le code source
  • Hot-reload en développement
  • Configuration sécurisée (pas de root, permissions correctes)
  • Nettoyage propre

Architecture réaliste utilisable en production.


Prérequis

  • Docker installé
  • Accès à Internet (pull d’images officielles)

Étape 1 — Créer un projet PHP structuré

Créer une arborescence propre avec un fichier PHP de test.

Une solution

Étape 2 — Lancer PHP-FPM avec volume partagé

Lancer un conteneur PHP 8.4 FPM, avec le code monté.

Une solution

Étape 3 — Lancer Nginx connecté à PHP-FPM

Lancer Nginx dans un autre conteneur, connecté au premier via un réseau Docker.

Une solution

Étape 4 — Vérifier que tout fonctionne

Accéder à http://localhost:3000/hello.php.

Une solution

Étape 5 — Modifier le code → changement instantané

PHP-FPM recharge les fichiers à chaque requête → hot reload natif.

Une solution

Étape 6 — Nettoyer l’environnement proprement

Arrêter et supprimer les deux conteneurs.

Une solution

Étape 7 — Pour aller plus loin (production réelle)

AméliorationCommande / Config
Activer OPcacheAjouter dans docker run : -v $(pwd)/config/php.ini:/usr/local/etc/php/conf.d/custom.ini
Gestion des erreurs 404Ajouter error_page 404 /404.html; dans Nginx
HTTPS avec cert autoUtiliser nginx:alpine + certbot (hors scope)
Docker ComposePasser à docker-compose.yml pour orchestrer les deux services
Exemple de php.ini avec OPcache

Architecture

Hôte (localhost:3000)

Nginx (port 3000)
↓ (FastCGI)
PHP-FPM (port 9000)

/var/www/html/public/*.php