Soy nuevo en ECS y estoy tratando de implementar un par de contenedores en una tarea de ECS usando Fargate.
Tengo 1 contenedor en ejecución que usa Angular2 y se ejecuta en nginx, el otro contenedor es el backend y se ejecuta en Springboot y usa el puerto 42048.
Estoy usando la red awsvpc con Fargate y tengo que hacerlo de esa manera.
La aplicación Angular se comunica con el back-end mediante localhost:42048/some_url y funciona bien en mi ventana acoplable local, pero en AWS, el front-end no encuentra el back-end. Actualmente tengo mis puertos asignados con 80 para el front-end y 42048 para el back-end y el front-end cuando se implementó localmente fue capaz de encontrar el back-end como localhost:42048
Cualquier ayuda sería apreciada. Gracias
la vinculación no está permitida en AWSVPC.
Puede vincular solo en modo de red cuando está configurado como puente.
links Type: string array Required: no
El parámetro de enlace permite que los contenedores se comuniquen entre sí sin necesidad de asignaciones de puertos. Solo se admite si el modo de red de una definición de tarea se establece en puente. La construcción name:internalName es análoga a name:alias en los enlaces de Docker. Se permiten hasta 255 letras (mayúsculas y minúsculas), números, guiones y guiones bajos. Para obtener más información sobre la vinculación de contenedores de Docker, vaya a https://docs.docker.com/engine/userguide/networking/default_network/dockerlinks/ . Este parámetro se asigna a enlaces en la sección Crear un contenedor de Docker Remote API y la opción
--link
para ejecutar docker.
Nota
Este parámetro no es compatible con contenedores o tareas de Windows que utilizan el modo de red awsvpc.
Importante
Los contenedores que se colocan en una sola instancia de contenedor pueden comunicarse entre sí sin necesidad de enlaces o asignaciones de puertos de host. El aislamiento de la red se logra en la instancia del contenedor mediante grupos de seguridad y configuraciones de VPC.
En el modo de red, debe definir dos contenedores en la misma definición de tarea y luego mencionar el nombre del contenedor en el enlace.
Y luego mencionó el nombre del contenedor backend en el contenedor frontend.
Con Fargate, si desea acceder a su backend usando localhost:42048
, puede intentar configurar su Frontend y Backend en la misma definición de Tarea. Al implementar la tarea, todos los contenedores definidos en la misma definición de tarea se ejecutarían en el mismo host subyacente y podemos acceder a él mediante localhost. Recuerde que el almacenamiento de Fargate es efímero y su backend no debe mantener el estado de la aplicación en el contenedor.
... "containerDefinitions": [ { "name": "frontend", "image": "my-repo/angularapp", "cpu": 256, "memory": 1024, "essential": true, "portMappings": [ { "containerPort": 8080, "hostPort": 8080 } ] }, { "name": "backend", "image": "my-repo/springboot", "cpu": 256, "memory": 1024, "essential": true, "portMappings": [ { "containerPort": 42048, "hostPort": 42048 } ] } ] ...
Pero me temo que este enfoque no es adecuado para el grado de producción.