2017-12-04 7 views
11

AWS Fargate에서 약간의 예제를 설정하고 거기에 하나의 데이터베이스 컨테이너가있는 하나의 애플리케이션 컨테이너를 만들려고합니다.AWS Fargate에서 컨테이너 연결하기

작업 정의가 두 컨테이너를 시작하지만 내 응용 프로그램 컨테이너가 getaddrinfo ENOTFOUND db db:3306으로 실패합니다. 따라서 데이터베이스 컨테이너를 내 응용 프로그램 컨테이너에서 찾을 수 없습니다.

Fargate는 Docker 컨테이너의 "링크"를 허용하지 않으므로 서로 통신 할 수있는 방법을 알고 싶습니다. 데이터베이스 컨테이너 이름은 db이고 포트 번호는 3306이며 내 응용 프로그램 컨테이너는이를 사용하도록 구성되어 있습니다.

불행히도 Fargate에서는 컨테이너 링크를 정의 할 수 없지만 "oldschool"ECS/EC2에서는 정의 할 수 없습니다.

로컬 도커 작성 설정에서는이 방법으로 작동합니다.

답변

10

Fargate 작업의 컨테이너는 네트워크 네임 스페이스를 공유하므로 링크를 전혀 사용할 필요가 없습니다. localhost를 통해 간단하게 통신 할 수 있습니다. 당신은 포트 8000에서 웹 서버를 실행하는 컨테이너 A를 경우

예를 들어, 컨테이너 B는 curl http://localhost:8000/

+0

감사로 도달 할 수있는, 매우 유용합니다! –

0

서비스가 공용 IP 주소를 통해 서로 통신 할 수 있도록 설정 한 다음 서비스가 자체적으로 통신 할 수있는 VPC 만 사용하여 포트를 보호 할 수 있습니다.