我的本地计算机上的端口50160
上运行了一个chatbot服务。此端口用于从docker容器中的nodejs-service接收消息。要将消息发送到聊天服务,docker-container的端口8080
将打开。这很好。
我使用docker run -p 8080:8080 registry.gitlab.com/abc/def/adapter-xyz
开始。
但是从docker-container向chatbot发送响应会在docker容器中返回以下错误:
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 :(得分:2)
您应该使用主机的IP地址而不是127.0.0.1。通过执行以下内容可以轻松提取地址:
docker network inspect -f '{{ range .IPAM.Config }}{{.Gateway}}{{end}}' bridge
我在评论中读到你不能改变那个地址(顺便说一句,硬编码永远不是一个好主意)。另一种解决方案是在容器本身中添加iptables规则,以将入站流量重定向到端口50160到主机。我不是很喜欢这个想法,因为它非常hacky但它应该有效。
答案 1 :(得分:0)
docker run --network=host
可以将容器的网络设置为主机,因此您可以从容器中访问.127.0.0.1。 但这不适用于osx