为什么我从Docker节点应用程序获取ECONNREFUSED连接到localhost MySQL?
我有一个本地运行的MySQL服务器..它不在一个容器内。 我的应用程序将打到RDS,所以没有意义走这条路线。 我的应用程序能够打RDS没有问题,作为一个testing。 但显然我想为本地发展打一些本地的东西。
从我的terminal,我可以做mysql --user=root --password=password mydb
成功。
因为我没有得到一个超时错误,从我的容器我可以ping 127.0.0.1:3306
没有问题。
我也使用控制台,看到我肯定传递正确的信息,更新从RDS的值到本地运行的MySQL。
Docker容器有自己的networkingIP地址,包括它自己的localhost
。 所以你基本上需要确定两件事情:
-
你的主机MySQL正在监听它的所有接口(my.cnf中的bind-addres = 0.0.0.0)。 用
netstat -na|grep 3306
检查。 -
找出您的容器可以到达的主机IP。 因此,检查容器的IP:
docker inspect container-id
,findIP,并用.1
replace最后一个部分,这应该是容器自身networking中主机的IP。 即172.17.0.1
(它可以被认为是固定的IP,对于开发环境是可以的)
所以最有可能的是这是你所需要的: 172.17.0.1:3306
: 172.17.0.1:3306