Si vous avez pris connaissance de l'article sur la v2.1.0 vous avez peut-être remarqué les échanges avec Jerry Wham en commentaires. (merci !) Pour faire court : la tentative d'exécuter deux projets LampBox en parallèle en reverse proxy sur Nginx s'est soldée par une erreur sur le port 80 en conflit, le second projet n'a pu démarrer avec force message port is already allocated. Jerry a remonté le bug, ont été échangées des options, et j'avais fini par conclure qu'un (re) passage par Traefik serait nécessaire.
Et voilà donc la version majeure.
👋 Exit Nginx en reverse proxy, bonjour Traefik
Voici le point majeur qu'il convient de retenir dans cette version : nous avons remplacé le reverse proxy Nginx par projet avec une instance unique et partagée de Traefik pour tous les projets LampBox !
Le principal souci de l'ancienne méthode était structurel. Chaque projet démarrait son conteneur Nginx en mode reverse proxy sur le port 80 ; du coup, impossible d'imaginer faire cohabiter deux projets en mode reverse sur une même machine. On avait alors deux conteneurs qui s'efforçaient de se lier à un même port et le régime n'était pas fun : ça explosait en silence. Grâce à Traefik, il existe une seule instance de cette appli, unique, qui tourne en permanence, qui écoute les ports 80 et 443, qui routent le trafic au bon projet dans l'application selon le domaine associé à chaque projet grâce à des labels Docker. Chaque projet déclare donc son domaine dans sa configuration, Traefik s'occupe des autres. On peut dorénavant lancer plusieurs projets en même temps sans craindre un conflit. En somme un seul Traefik pour les gérer tous \o/
🔒 Le routage par domaine et le certificat partagé
Avec Traefik, chaque projet est désormais servi à son propre domaine https://PROJET_DOMAIN - la valeur configurée dans le .env du projet. Pas de numéro de port à retenir, pas de configuration manuelle : les labels Docker font le lien entre le conteneur et le domaine, et Traefik le prend en charge automatiquement.
Côté SSL, on passe également d'un certificat par projet à un certificat .local partagé. C'est plus simple à gérer, et ça évite (parfois...) d'avoir à faire confiance à un nouveau certificat autosigné à chaque nouveau projet.
🛠️ Deux nouvelles commandes (et les targets Makefile qui vont avec)
Pour gérer l'instance Traefik partagée, deux commandes font leur apparition dans lamp.sh :
./lamp.sh proxy-up- démarre l'instance Traefik partagée./lamp.sh proxy-down- l'arrête
Les équivalents sont également disponibles comme targets Makefile pour ceux qui préfèrent make proxy-up / make proxy-down. A noter que quel que soit le nombre de projets, une seul instance Traefik sera aux commandes.
🔀 MYSQL_PORT vide par défaut : plusieurs projets en parallèle out of the box
Un autre point qui posait problème en multi-projets : le port MySQL. Si deux projets exposaient le même port MySQL sur l'hôte, le deuxième refusait de démarrer - même scénario que pour Nginx.
La variable MYSQL_PORT est désormais vide par défaut, ce qui signifie que le port de la base de données n'est plus exposé sur l'hôte sauf si on le demande explicitement. C'est une simple question d'usage. Plusieurs projets peuvent donc tourner en parallèle sans se marcher dessus, sans aucune config supplémentaire.
À noter aussi : le bug où MYSQL_PORT= (vide explicitement dans le .env) ne désactivait pas réellement l'exposition du port est corrigé. Une sombre histoire de valeur par défaut dans les docker-compose.yml.
🗑️ Nettoyage : config/nginx/ et les variables NGINX_ disparaissent
Puisque Nginx ne gère plus le reverse proxy, le dossier config/nginx/ et les variables NGINX_* dans sample.env ont été supprimés. Moins de fichiers, moins de variables, moins de confusion pour comprendre ce qui fait quoi.
Si vous mettiez à jour depuis une 2.1.0, pensez à nettoyer votre .env des variables NGINX_ devenues obsolètes - elles n'ont plus d'effet de toute façon.
La documentation a été mise à jour pour couvrir le nouveau flux de démarrage multi-projets.
Bon. La 2.2.0 répond directement à la limite la plus concrète de la version précédente : faire tourner plusieurs projets LampBox en parallèle sur la même machine, avec des domaines propres et sans jongler avec des ports. Traefik gère tout ça proprement, et les projets existants devraient s'y retrouver sans trop de soucis... Il vous faudra toujours autant d'instances LampBox que de projets, mais avec une gestion mutualisée. Et ça, c'est top ! 😎
Les PR restent les bienvenues, et les issues GitHub aussi.