我是使用Docker的初学者,并且尝试从php运行docker,特别是我需要运行openface代码。我使用了https://cmusatyalab.github.io/openface/setup/此处提供的命令行,以确保docker在我的pc correclty上运行并且可以工作。但是现在我需要从PHP调用它,我在批处理文件中编写了相同的命令,如下所示
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容器内执行。如何使所有命令执行?
任何帮助将不胜感激,
谢谢
最佳答案
问题是第一个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并为您提供一个shell
关于php - 如何从PHP运行Docker?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45754360/