On en avait déjà parlé brièvement, mais est-ce que certains ici ont une expérience avec Docker ?
Je me suis tapé une large partie de leur documentation, et il est probable que je fasse mes premiers pas avec demain (j'ai un hexacore avec 32go de RAM qui me sert de serveur de test à l'unif, et le biologiste avec qui je travaille, qui est aussi un informaticien curieux, s'intéresse à Docker. C'est donc l'occasion de s'y mettre).
En particulier, une idée de la "difficulté" de migrer une infrastructure existante dans des containers ? Si mes essais s'avèrent concluants, je compte migrer Lexpage & co dans des containers... Mais j'ai encore un peu de mal à voir comment "tout doit être idéalement décomposé".
Notamment, sur le VPS, j'ai actuellement un Nginx, et 3 applications (enfin, 3 types d'applications) derrière : du Django (servi via Gunicorn en WSGI, via socket), du PHP (servi via FPM, je pense que c'est du wsgi aussi via socket) et du NodeJS (servi directement, Nginx ne sert que de proxy + fichiers statiques).
Est-ce qu'il vaut mieux :
- Un container par application, avec un Nginx "local" + un container "Nginx frontal" qui fait le dispatch ? Cela me permet d'avoir une application "auto-contenue" dans son container, mais nécessite un Nginx supplémentaire par application...
- Un container par application, avec un Nginx frontal dans un container, qui communique/redirige via socket (ou autre) avec les autres containers. Dans ce cas, le container "frontal" aura une connaissance plus complète des applications derrières (notamment pour servir les fichiers statiques). C'est une sorte de "clone mais sous container" de la configuration actuelle, mais cela signifie que mon frontal ne fait pas que du proxy, et qu'une partie de la "logique" de l'application (les fichiers statiques, typiquement, ainsi que l'upload, etc. etc.) ne se trouve pas dans le container de cette application. Vraiment, les fichiers statiques font un peu chier
Et aussi, est-ce qu'il est préférable de :
- Charger une image, et dans le container, faire la configuration puis sauver tout ça sous forme d'image (en gros, ça devient mon "environnement" que je peux cloner) ou;
- Créer un Dockerfile sur base d'une image existante et scripter la configuration là-dedans, afin d'avoir le "minimum" de modifications dans l'image de base ?
Le premier cas est plus simple (en gros, une sorte de VM). Le deuxième me semble plus propre, car l'image de base est conservée. L'avantage est qu'il est facilement possible de mettre à jour l'image de base sans perdre la configuration. Au final, de toute façon, les deux approches fournissent exactement la même image ...