为什么我从docker节点应用程序获得ECONNREFUSED连接到localhost MySQL?

时间:2017-06-02 20:22:53

标签: mysql node.js express docker

我有一个本地运行的MySQL服务器..它不在容器内。我的应用程序将会击中RDS,所以没有意义去那条路线。我的应用程序能够击中RDS没问题,作为测试。但显然我想在本地开发一些东西。

从我的终端,我可以成功mysql --user=root --password=password mydb

由于我没有收到超时错误,因此从我的容器中我ping 127.0.0.1:3306可以没有问题。

我还使用了控制台,在将RDS的值更新为本地运行的MySQL后,我肯定会传递正确的信息。

1 个答案:

答案 0 :(得分:3)

Docker容器有自己的网络IP,包括它自己的$users。所以你基本上需要确定两件事:

  1. 您的主机MySQL正在侦听其所有接口(my.cnf中的bind-addres = 0.0.0.0)。查看foreach ($users as $row){

  2. 找出容器可以到达的主机IP。因此,检查容器的IP:$users[] = $rs['id'];,找到IP,并用foo <- function(dt, value) { result <- dt[A == value,] return(result) } combined <- lapply(tables, foo, value = 1) 替换最后一部分,该部分应该是容器自己网络中主机的IP。即localhost(它可以被视为固定IP,对于开发环境来说没关系)

  3. 所以很可能这就是你需要的:netstat -na|grep 3306