2017-08-18 70 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

这家伙说了什么? –