【问题标题】:Node RED on Docker writing on MYSQL databaseDocker 上的节点 RED 写入 MYSQL 数据库
【发布时间】:2021-06-11 16:08:39
【问题描述】:

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

作为主机,我使用的是 localhost(见图)

我收到错误:connection refused

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

【问题讨论】:

  • 你的意思是数据库不在Docker VM中?
  • 数据库不在 Docker 桌面上

标签: mysql docker node-red


【解决方案1】:

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 的主机IP 地址

编辑:

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

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

【讨论】:

  • 只是为了澄清:MySQL 没有在 docker 上运行,只是在 Node-RED 上运行。您的解决方案仍然有效吗?非常感谢!
猜你喜欢
  • 2020-09-23
  • 1970-01-01
  • 2010-12-03
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-11
相关资源
最近更新 更多