2017-11-15 4 views
0

로컬 컴퓨터의 포트 50160에서 chatbot 서비스가 실행 중입니다. 이 포트는 도커 컨테이너의 nodejs-service에서 메시지를 수신하기위한 포트입니다. 채팅 서비스에 메시지를 보내려면 도커 컨테이너의 포트는 8080이어야합니다. 이것은 잘 작동합니다.도커 브리징 로컬 호스트 포트

docker run -p 8080:8080 registry.gitlab.com/abc/def/adapter-xyz을 사용하여 시작합니다.

그러나 chatbot에 고정 표시기 컨테이너로부터 응답을 전송은 고정 표시기 컨테이너에 다음과 같은 오류를 반환

ChatConnector: message received. 
Error: connect ECONNREFUSED 127.0.0.1:50160 
    at Object.exports._errnoException (util.js:1020:11) 
    at exports._exceptionWithHostPort (util.js:1043:20) 
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1086:14) 

(내 컴퓨터에서 실행) chatbot에 대한 응답을 다시 보낼 수없는 것 같다. 어떤 생각?

+0

'0.0.0.0 : 50160'이 아니어야합니까? – Opal

+0

슬프게도 의존성에서이 IP 주소를 변경할 수 없기 때문에이 IP 주소를 변경할 수 없습니다. Doocker 외부에서 서비스를 실행하면 문제가 없습니다. – bbholzbb

답변

2

127.0.0.1 대신 호스트의 IP 주소를 사용해야합니다. 주소가 쉽게 실행하여 추출 할 수있다 : 나는 당신이 그 주소를 변경할 수 없습니다 코멘트 읽어

docker network inspect -f '{{ range .IPAM.Config }}{{.Gateway}}{{end}}' bridge 

(BTW, 하드 코딩는 것은 좋은 방법이 아닙니다). 또 다른 솔루션은 컨테이너 자체에 iptables 규칙을 추가하여 인바운드 트래픽을 포트 50160으로 호스트 시스템으로 리디렉션하는 것입니다. 나는이 아이디어를별로 좋아하지 않지만 꽤 해키지만 작동해야한다.

0
docker run --network=host 

은 컨테이너의 네트워크를 호스트로 설정할 수 있으므로 컨테이너에서 127.0.0.1에 액세스 할 수 있습니다. 하지만 osx에서는 작동하지 않습니다

관련 문제