Docker 上的节点 RED 写入 MYSQL 数据库

Node RED on Docker writing on MYSQL database

我是 运行 Docker 上的 Node-RED,我正在尝试将数据写入本地主机上的 MySQL。

作为主机,我正在使用本地主机(见图)

我收到错误:connection refused

我应该在这里使用哪个主机地址?不太明白容器和本地主机之间的通信。

localhost 始终指向打开连接的程序绑定到的 TCP/IP 堆栈。

每个 Docker 容器都有自己的 TCP/IP 堆栈,因此除非数据库 运行 在与 Node-RED 相同的容器中 localhost 将不是正确的主机名对于数据库。

你有3个选择

  1. 如果您使用 docker-compose,那么您可以使用容器名称作为主机名,它将连接到正确的容器。
  2. 您可以使用 docker inspect [container-instance-name] 找到分配给数据库容器的 IP 地址并使用它
  3. 如果您已经将容器端口映射到您的主机(使用 -p 选项),那么您可以使用通常默认为 172.17.0.1
  4. 的主机 IP 地址

编辑:

要连接到主机,您可以在 Docker 上使用 host.docker.internal 用于 Windows 和 Docker 用于 Mac(不幸的是 issue 修复此问题 Linux 已开放 3 年多)。

您应该还可以使用上面第 3 点中的 IP 地址。