En cours de développement, j'ai une Java API backend que j'exécute avec Tomcat. Je veux encapsuler le backend dans un conteneur Docker et déployer sur une instance AWS EC2, et être capable de faire évoluer haut/bas.
Chaque conteneur Docker doit-il avoir un serveur Tomcat distinct en cours d'exécution? Je ne connais aucun moyen de le contourner, mais je suppose que cela semble être beaucoup de surcharge (1 Go-2 Go de mémoire, 500 Mo d'espace disque) par conteneur.
Dans l'architecture des microservices, vous voulez généralement la flexibilité de déployer les services indépendamment et cette exigence vous amène à avoir un conteneur par service avec toutes les dépendances et l'environnement nécessaires pour l'exécuter.
L'écosystème par défaut Java est lourd pour créer des applications natives du cloud, mais cela change avec des projets comme Quarkus et GraaVM où vous pouvez construire applications natives cloud avec hautes performances et faible consommation de mémoire.
Pensez à utiliser intégré Tomcat dans votre application au lieu de déployer votre application dans une instance Tomcat. Je préfère cette approche en général, mais elle est nettement plus alignée sur les architectures de micro-services et les conteneurs.
Vous n'avez pas besoin de docker dans ce cas.
Tomcat est déjà un système de gestion de conteneurs qui peut exécuter plusieurs sites Web et API séparés