gpt4 book ai didi

docker - net_adm :ping from one container to another

转载 作者:行者123 更新时间:2023-12-02 06:55:20 24 4
gpt4 key购买 nike

使用 Erlang 和 Docker 容器。我跨两个容器创建了一个玩具应用程序:客户端和服务器。这是 docker-compose.yml 文件:

version: '2'
services:
client:
image: test3_client
links:
- server
server:
image: test3_server

这是服务器的 Dockerfile

FROM erlang:19.0
ADD . /app
WORKDIR /app
CMD erl -sname server -setcookie abc -noshell -s test3 start

(客户端大致相同,只是名称为 client 并进入 test3 的 client 函数)。这是 Erlang 代码:

-module (test3).

-compile(export_all).

start() ->
register(greeter, spawn(fun() -> loop() end)) .

loop() ->
io:format("server loop~n"),
receive
{greeting, Sender, Name} ->
io:format("greeting: ~w~n", [Name]),
Sender ! {response, self(), "Yowser " + Name}
end,
loop() .

client() ->
timer:sleep(250),
ok = ping_server(10),
greeter ! {greeting, self, "diego"},
receive
{response, Pid, Greeting} ->
io:format("I was greeted: " + Greeting + "!~n")
end .

ping_server(Count) ->

case Count of
X when X < 1 ->
{error, "unable to reach server"};
_ ->
case net_adm:ping(server) of
pong ->
io:format("found server~n"),
ok ;
pang ->
io:format("unable to reach server~n"),
timer:sleep(1000),
ping_server(Count - 1)
end
end .

当我使用docker-compose up运行容器时,我得到了这个:

docker-compose up
Creating network "test3_default" with the default driver
Creating test3_server_1
Creating test3_client_1
Attaching to test3_server_1, test3_client_1
server_1 | server loop
client_1 | unable to reach server
client_1 | unable to reach server
client_1 | unable to reach server
client_1 | unable to reach server
client_1 | unable to reach server
. . .

最终客户感到无聊并放弃。

你能看出我错在哪里吗?

我见过this post克里斯·史密斯(Chris Smith)的作品,非常好。但是 Chris 使用的是套接字,而我想利用 native Erlang 消息传递...

最佳答案

可能存在多个问题,但至少我可以发现一个问题是您正在尝试 ping server其中这不是有效的节点名称。当你启动一个 Erlang 节点时,它会获得一个 <name>@<host> 形式的名称。 ,其中 host 是运行它的计算机的主机名。我不确定它如何与容器一起使用。您可以尝试运行 node()在您的服务器上查看整个节点名称是什么,然后更改您的 net_adm:ping()指出这一点。

关于docker - net_adm :ping from one container to another,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38912294/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com