在我dockerfile我有以下行:Dockerfile:运行客户机/服务器的Python脚本
CMD [ "python", "./server.py" ]
CMD [ "python", "./client.py" ]
但两者之间的连接被拒绝,我在做这错了吗?
在我dockerfile我有以下行:Dockerfile:运行客户机/服务器的Python脚本
CMD [ "python", "./server.py" ]
CMD [ "python", "./client.py" ]
但两者之间的连接被拒绝,我在做这错了吗?
从文档:一个Dockerfile中只能有一个CMD指令。如果列出多个CMD,则只有最后一个CMD才会生效。
您可以构建两个对话框。一个用于客户端,另一个用于服务器,并在两者之间进行通信。
我所做的,让我守护进程(启动/不认)多个进程:
因为有些古怪用的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
它不会退出。
只会运行最新的'CMD'。也许你可以尝试将它们放入不同的Docker镜像并同时在网络上同时运行?你能分享你的整个Dockerfile吗? – johnharris85
1)这很大程度上取决于你的Python文件2)只有客户端'CMD'运行,所以,是的,连接应该被拒绝。 –
理想情况下,您只需运行服务器的容器。你的主机应该是客户端。不清楚你为什么拥有一个容器。 –