在我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'運行,所以,是的,連接應該被拒絕。 –
理想情況下,您只需運行服務器的容器。你的主機應該是客戶端。不清楚你爲什麼擁有一個容器。 –