Multi-sites et ports sous Docker

Bonjour,
Je me permet de créer un autre post ici concernant ce problème spécifique car le titre de l’autre n’est plus d’actualité (doc mise à jour, rapide, bravo !) et je ne peux pas changer le titre.

Voici ce que je fais et je comprends dans dodock :
Par défaut, on a le site frontend, servi sur le port 8080.
Si on crée un autre site, par exemple bench new-site temp (et que /etc/hosts est configuré), ça crée la db, on peut accéder à temp:8080 … mais c’est en fait frontend, car il ne demande pas à créer une société, il a déja la config, les utilisateurs et l’app de test installée (builder).

Si on précise que l’on veut ce domaine sur un autre port bench set-nginx-port temp 8081, ça confirme, écrit config/nginx.conf … et puis c’est tout.
bench setup nginx serait censé mettre à jour etc/nginx/nginx.conf (c’est ce qu"il dit), sauf que ce n’est pas mis à jour, sans doute car il n’est pas root sur le container.

Alors, dans /etc/nginx/nginx.conf, j’ai tenté d’include le nginx.conf crée par bench, mais ça ne passe pas (le container boot en boucle avec erreur dans les logs), il a au moins une erreur près du fichier log (main), peut être plus.
Ces 2 fichiers qui sont censés être proches, sont assez différents, je ne connais pas assez nginx pour connaitre les limitations ou problèmes éventuels.

Soit je n’ai rien compris (ça m’arrive), soit j’ai raté quelque chose, soit personne n’a eu le cas. J’aimerai savoir :smile:

De mémoire, il me semble que dans la stack prod d’ERPNext, les sites sur le même port sont bien distincts (re-configure d’une société au premier login puisque c’est une autre db).

J’espère que mon explication est assez clair. J’ai besoin de retours d’expériences. Merci d’avance !

Bonjour @pmz,

Une image Docker est immuable, donc changer la configuration Nginx depuis l’intérieur d’un conteneur actif ne fonctionnera pas.

J’avoue ne jamais avoir essayé de faire un cas multi-sites avec l’installation Docker qu’on propose. Si vraiment tu souhaites plus de contrôle, l’installation standard est peut-être plus adaptée ?


L’installation Docker est très particulière et ne reprend que partiellement les concepts de l’installation standard. Il faut ajuster le fichier compose pour les différents cas d’usage qui ne rentrent pas dans le cas d’usage de l’installation Dokos sous Docker classique (un seul site, servi sur le port 8080, avec un reverse proxy à rajouter devant soi-même).

Dès qu’on commence à toucher à la configuration des éléments à l’intérieur du conteneur (c’est-à-dire dès qu’on change la configuration nginx par défaut de l’image), il faut faire attention : on s’éloigne de la raison d’être de l’installation Docker de Dokos (une installation rapide et simple pour les cas simples).

Changer la configuration Nginx n’est pas vraiment une opération courante avec l’installation standard hors-Docker, car elle n’est pas nécessaire.


Si jamais tu veux faire une installation plus précise et avec plus de contrôle, tu peux consulter les pages de documentation listées ici :

Par exemple le guide Single Server Setup, ou Port-based multi-tenancy

Ou alors tu peux tester l’installation standard de Dokos, qui te donnera un contrôle complet, et qui gère simplement le multi-sites et HTTPS. Mais c’est hors-Docker.

1 Like

J’ai trouvé cet article qui reprend les étapes du Single Server Setup. Single server ça veut dire multi-bench et multi-sites, la gestion la plus complète qu’on pourrait avoir.

1 Like

Merci @corentin ! Encore une fois, réponse super précise qui ouvre plein de possibilités à court et plus long terme.

  • la solution zero-docker est inenvisageable sur un serveur de prod, mais OK pour du dev. Mon problème est pour les tests de l’app dans un setup de prod normal en multi-sites (stack docker de prod ERPNext et Dokos vue que l’app que je dĂ©veloppe fonctionne sur les deux).
  • SSS, c’est du traefik, je veux Ă©viter pour le moment, histoire de ne pas avoir 2 reverse proxy et 2 gestion des certificats SSL. J’ai peut-ĂŞtre juste une apprĂ©hension idiote.
  • Port-base, je comprends, c’est juste redondant (un container « frontend Â» pour chaque site alors que nginx peut gĂ©rer plusieurs virtual servers).

L’installation Docker est très particulière et ne reprend que partiellement les concepts de l’installation standard.

Vous pouvez m’en dire plus ? Quelles différences ? Limitations ? A part les fichiers dans les containers bien-sûr.

Concernant nginx (si vous maîtrisez), est-ce que ces différences vous parlent ?


A droite celui qui est réellement utilisé (8080), à gauche c’est celui crée par bench (80, le serveur en 8081 est identique).
Oui, je voudrais quand mĂŞme tenter le truc mĂŞme en local, histoire de comprendre.
Encore merci !