🐳 LampBox passe en 2.2.0 : Traefik dĂ©barque, Nginx dĂ©gage

🐳 LampBox passe en 2.2.0 : Traefik dĂ©barque, Nginx dĂ©gage

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.

👉 LampBox sur GitHub
👉 Release v2.2.0

0 commentaire(s)

Aucun commentaire pour l'instant. Soyez le premier Ă  commenter.

Laisser un commentaire

0 / 1000