저번에 이어서 ECS 배포에서 해결한 문제점에 대해 써보겠다.
포트 매핑
현재 nginx, springboot 가 하나의 테스크, nginx, next가 하나의 테스크로 테스크 하나 당 2개의 컨테이너를 정의함
브리지 네트워크 모드를 사용해 ECS가 알아서 32769~65535 포트를 nginx의 80포트로 매핑해준다.
nginx는 그럼 어디로 포트매핑해야댐?
Q. spring, next 도 브리지 모드로 8080, 3000 해주면 되는거 아님?
A. 그렇게하면 service에 연결된 loadbalancer가 언제는 nginx를 통해 spring으로 연결하고 또 언제는 spring으로 직접 연결함
Q. 그냥 80 -> 8080 하면 되는거 아님?
A. 컨테이너 여러개면 80 -> 8080, 80 -> 8081 이런식으로 스프링 컨테이너의 포트를 달리 해주어야 하고, nginx도 마찬가지.
nginx, springboot를 연결한 방법에 대해 설명하겠다. // next도 동일한 방법
task definition에 컨테이너의 이름을 지정해준다
nginx에 앞서 지정한 이름을 통해 리버스 프록시를 설정해준다.
ECS가 알아서 연결해줌 - 어케하는거지
docker는 컨테이너 간 네트워킹을 위해 bridge 네트워크라는 것을 제공함
ecs task definition가 docker compose와 유사하게 동작하여 Docker 브리지 네트워킹을 통해 포트를 매핑함
이 과정을 ECS가 알아서 해주는 것
ECS는 어렵고 편하다..