2016-12-21 69 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 

它不會退出。