Cómo ejecutar múltiples microservicios en un solo contenedor Tomcat con el mismo puerto

En primer lugar, no deberías hacer esto. Tuve la misma idea, pero los contenedores son bastante livianos y con los recursos de la nube hoy (a menos que te interesen los kb en memoria): echa un vistazo aquí para ver cuál es el costo de rendimiento de tiempo de ejecución de un contenedor Docker

Cuando se trata de escalar una aplicación específica o garantizar que los recursos estén disponibles para las necesidades de sus aplicaciones, un contenedor por aplicación es el camino y la OMI debería ser un principio de microservicio.

Ahora, si está intentando ejecutar una prueba rápida de concepto. Esto es posible con Kubernetes si planeas usarlo.

  1. Cree una definición de implementación e implemente su contenedor, pero dentro de su contenedor, ejecute cada aplicación con un puerto único .
  2. Cree un servicio K8s por aplicación y que se asigne al puerto específico de esa aplicación. Asegúrese de que su servicio tenga su propia IP o nombre de dominio asignado al ingreso.

Ahora lo anterior puede sonarle extremadamente extraño si no está usando k8s. Pero hojeé la parte de la ventana acoplable y pasé 10 horas en microservicios escalables con Kubernetes | Udacity que te ayudará a entender lo anterior.

De lo contrario, recomiendo usar una configuración de DNS local junto con docker-compose con un amor de una aplicación por contenedor.

Simplemente puede implementar cada Microservicio como un punto final separado e implementarlo en el mismo contenedor Tomcat. Pero esto esencialmente anulará el propósito principal de la arquitectura de Microservicios.

Desea utilizar la arquitectura de Microservicios para poder escalarla independientemente de cualquier otro Microservicio.

Por lo tanto, es mejor ejecutar microservicios separados en diferentes contenedores de Tomcat.

Desde la esencia del estilo de la arquitectura de microservicios, debe implementar cada microservicio por separado, en un contenedor específico.

Saludos,

Usted no

Defina el puerto no como 0 en el archivo de configuración, mientras que el inicio tomará puertos aleatorios. Toda la instancia estará disponible con Eureka Server.