Nous emballons et distribuons une application web et nous sentons le besoin de passer du déploiement en .deb/.rpm à une approche basée sur les conteneurs afin de mieux contrôler les versions des dépendances (comme une version plus récente de Python sur des distributions plus anciennes).
J’ai regardé du côté de LXC/LXD, ce qui semble tentant pour l’ancienne méthode de développement d’applications avec l’état stocké à l’intérieur du conteneur. Mais nous devons également déployer sur RHEL/CentOS, et l’état des paquets LXC et LXD y est déplorable. Il ne semble pas que LXD ni LXC aient un avenir dans l’écosystème RHEL.
J’ai quelque peu résisté à Docker en raison de divers problèmes de conception ou de sécurité qu’il a connus au fil des ans, mais aussi à cause du changement de paradigme vers des conteneurs sans état que nous, les vieux de la vieille, devons adopter.
Docker est-il désormais une plateforme fiable pour des déploiements en production, petits ou grands, où la disponibilité de l’application est vraiment cruciale ?
Et quelles seraient les meilleures pratiques pour emballer et distribuer des applications avec Docker ?
Puisque Discourse est exclusivement déployé sur Docker et que je suis sûr qu’il existe des déploiements à grande échelle, cela semble être le meilleur endroit pour poser cette question.
Nous gérons des centaines de serveurs répartis sur plusieurs centres de données, en mode bare metal et cloud, et chaque composant de l’application Discourse s’exécute dans des conteneurs Docker.
Docker a certes son lot de bugs, mais pour nous, les avantages l’emportent sur les inconvénients.
Juste une précision :
Je ne sais pas exactement ce que vous voulez dire par là, mais les données d’état à long terme, comme celles d’une base de données, sont généralement conservées dans des volumes mappés vers l’hôte.
Les conteneurs Discourse sont-ils connus pour fonctionner sans problème à la fois sur des hôtes avec Ubuntu et des distributions RHEL (Ubuntu 18.04/16.04 et CentOS 7/8) ?