2016-12-21 48 views
0

在我dockerfile我有以下行:Dockerfile:运行客户机/服务器的Python脚本

CMD [ "python", "./server.py" ] 
CMD [ "python", "./client.py" ] 

但两者之间的连接被拒绝,我在做这错了吗?

+2

只会运行最新的'CMD'。也许你可以尝试将它们放入不同的Docker镜像并同时在网络上同时运行?你能分享你的整个Dockerfile吗? – johnharris85

+0

1)这很大程度上取决于你的Python文件2)只有客户端'CMD'运行,所以,是的,连接应该被拒绝。 –

+0

理想情况下,您只需运行服务器的容器。你的主机应该是客户端。不清楚你为什么拥有一个容器。 –

回答

0

从文档:一个Dockerfile中只能有一个CMD指令。如果列出多个CMD,则只有最后一个CMD才会生效。

您可以构建两个对话框。一个用于客户端,另一个用于服务器,并在两者之间进行通信。

0

我所做的,让我守护进程(启动/不认)多个进程:

因为有些古怪用的nohup的(这显然不能直接否认通过ssh的Python程序),这需要在一个单独的脚本正常工作: startlocal.sh

python server.py > /dev/null 2>&1 & 

运行什么:

start.sh

nohup ./startlocal.sh > /dev/null 2>&1 & 
nohup ./startlocal2.sh > /dev/null 2>&1 & 
... 

我不认为这两个都需要/dev/null...,但是这个工作(甚至通过SSH)。与码头工人,你想命令采取永远,所以最后你可以:

sleep infinity 

它不会退出。