【问题标题】:How to connect nodes of two docker containers in elixir?如何在 elixir 中连接两个 docker 容器的节点?
【发布时间】:2018-02-21 13:03:35
【问题描述】:

我正在尝试连接不同 docker 容器的 2 个节点。

容器1:iex --name abc@172.17.0.2 --cookie foo

容器2:iex --name xyz@172.17.0.4 --cookie foo

现在假设我想从 xyz@172.17.0.4 连接到 abc@172.17.0.2

容器2:

iex(xyz@172.17.0.4)> Node.connect(:"abc@172.17.0.2")

iex(xyz@172.17.0.4)> true

节点正在连接。但是如果我这样做了

iex(xyz@172.17.0.4)> node  = "abc@172.17.0.2"

iex(xyz@172.17.0.4)> Node.connect(:node)

iex(xyz@172.17.0.4)> false

为什么我会出错?其他函数也会发生这种情况,例如 Node.spawn/2。

【问题讨论】:

  • 那么node = :"abc@172.17.0.2" 然后Node.connect(node)
  • 建议:不要使用 IP,使用名称,让 docker 自动链接您的容器。
  • @Pascal,方法可行,我刚刚测试过
  • @Pascal,塔伦谢谢!!有效。请参阅我的答案以了解解决此问题的另一种方法。

标签: docker erlang elixir


【解决方案1】:

我通过将字符串转换为原子来使其工作。

iex(xyz@172.17.0.4)> node  = "abc@172.17.0.2"

iex(xyz@172.17.0.4)> Node.connect(String.to_atom(node))

iex(xyz@172.17.0.4)> true

【讨论】:

  • 你的解决方案是正确的,它需要成为一个原子。但是,您可以指定相同的功能,例如::"abc@172.17.0.2"。祝你好运!
猜你喜欢
  • 1970-01-01
  • 2020-03-08
  • 2018-03-01
  • 2013-06-25
  • 1970-01-01
  • 1970-01-01
  • 2021-11-24
  • 2021-01-26
  • 2018-06-16
相关资源
最近更新 更多