在docker上连接erlang节点

时间:2017-07-12 12:09:54

标签: docker erlang elixir

我有两个包含已发布的灵丹妙药应用程序的泊坞窗图像 我在本地机器上运行这两个码头工具 我正在尝试连接两个节点 如何在命名节点上运行已发布的应用程序?
或 - 有没有其他方法可以做到这一点?

2 个答案:

答案 0 :(得分:3)

如果没有docker-compose的Erlang节点,你就可以这样做。

1。创建网络

docker network create example

2。启动docker容器

1号航站楼

$ docker run --rm -it --name bar -h bar --net example erlang:19.3 /bin/bash
root@bar:/# erl -sname bar -setcookie example
Erlang/OTP 19 [erts-8.3.5.1] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:10] [hipe] [kernel-poll:false]

Eshell V8.3.5.1  (abort with ^G)
(bar@bar)1>

2号航站楼

docker run --rm -it --name foo -h foo --net example erlang:19.3 /bin/bash
root@foo:/# erl -sname foo -setcookie example
Erlang/OTP 19 [erts-8.3.5.1] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:10] [hipe] [kernel-poll:false]

Eshell V8.3.5.1  (abort with ^G)
(foo@foo)1>

3。检查连接性

1号航站楼

(foo@foo)1> net_adm:ping(bar@bar).
pong

2号航站楼

(bar@bar)1> net_adm:ping(foo@foo).
pong

获取在docker容器上运行的发行版的远程shell

1。在两个docker容器之一

中启动bash shell
docker exec -it foo /bin/bash

其中foo是泊坞窗容器的名称。

2。启动远程shell

./rel/your_app/bin/your_app console

我假设你知道容器内释放的路径。

答案 1 :(得分:2)

使用docker-compose

这样的事情:

搬运工-compose.yml:

version: "3"
services:
  elixir1:
    image: image-name
    #(other configs here, like ports, volumes)

  elixir2:
    image: image-name
    #(other configs here, like ports, volumes)

然后,您可以将DNS elixir1elixir2与其中的名称对齐。

将您的docker run命令替换为:

docker-compose up