2017-08-18 64 views
0

我是使用Docker的初學者,我試圖從php運行docker,特別是我需要運行openface代碼。我使用這裏提供的命令行https://cmusatyalab.github.io/openface/setup/來確保docker正在我的電腦上運行,並且它可以正常工作。但現在我需要從PHP調用它,我寫在批處理文件相同的命令如下如何從PHP運行Docker?

docker run -p 9000:9000 -p 8000:8000 -t -i bamos/openface /bin/bash 
cd /root/openface 
./demos/compare.py images/examples/{lennon*,clapton*} 
pause 

,並試圖在PHP中通過調用

echo shell_exec ("test.bat"); 

執行它,但是當我運行該批處理文件直接只執行第一行。因爲看起來下一個命令並沒有在Docker容器中執行。

cmd screen

我怎樣才能使所有命令執行? 任何幫助將非常感謝, 謝謝

回答

2

問題是第一個bash不會退出之前,你退出它,其餘的命令是由主機bash解釋。

你需要的是你的工作就完成了,然後你會得到一個bash內(容器內)

docker run -p 9000:9000 -p 8000:8000 -t -i bamos/openface /bin/bash -c "cd /root/openface && ./demos/compare.py images/examples/{lennon*,clapton*} && exec bash" 

第一「的bash -c」是執行的命令,最後一個命令exec bash覆蓋主bash並給你一個外殼

+0

但他在Windows上這樣做。 – SomethingDark

+0

沒有什麼區別,但現在我重新閱讀這個問題,他不需要最後一部分'&& exec bash'。休息他可以使用我發佈的內容。 bash的是內部的容器,所以它並不重要 –

+0

這傢伙說了什麼? –