로컬 Docker 컨테이너에서 실행 중인 Go GRPC 서버에 연결할 수 없습니다.
로컬에서 실행되는 GRPC 서비스에 대해 GRPC 클라이언트를 실행하는 경우 서버의 청취 끝점을 고려하는 것이 중요합니다. 기본적으로 호스트 이름이나 IP 주소(이 경우 localhost)를 지정하면 서버는 해당 특정 주소에서만 수신 대기합니다.
Docker 컨테이너의 맥락에서 localhost(127.0.0.1)에서 수신 대기하는 것은 컨테이너 외부에서는 접근이 불가능하기 때문에 문제가 됩니다. Docker는 호스트 시스템의 포트를 노출할 수 있지만 서버는 컨테이너 내의 127.0.0.1에서만 수신합니다.
이 문제를 해결하려면 수신 엔드포인트를 *:51672로 변경하여 서버에 수신하도록 지시해야 합니다. 컨테이너 내에서 사용 가능한 모든 IP 주소에 대해 이를 통해 컨테이너는 노출된 포트의 호스트 시스템에서 전달된 트래픽을 수신할 수 있습니다.
문제를 확인하려면 다음 명령을 사용하여 iptables 규칙을 검사할 수 있습니다.
이 규칙은 Docker는 포트 전달을 구현하기 위해 생성합니다. 사용 가능한 모든 IP 주소를 수신하도록 서버를 구성하면 클라이언트는 Docker 컨테이너 내에서 실행되는 GRPC 서비스에 성공적으로 연결할 수 있습니다.
위 내용은 내 GRPC 클라이언트가 Docker화된 서버에 연결할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!