php - 如何从PHP运行Docker?

标签 php batch-file docker

我是使用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容器内执行。
cmd screen
如何使所有命令执行?
任何帮助将不胜感激,
谢谢

最佳答案

问题是第一个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/

相关文章:

windows - 带括号和管道的多行 Windows shell 命令

windows - 批处理文件无法抑制 "terminate job"

terminal - 无法将终端附加到 docker 中正在运行的容器

php - 带有别名的 SUM() 字段上的 Doctrine orderBy

php - 发布时从 base64 编码的字符串中删除空格

php - Lithium cookies, session 中的所有行

php - 如何在我的 android 应用程序上打印 PHP echo?

batch-file - 复制、重命名然后移动的批处理命令全部失败

amazon-web-services - GitLab Ci/Cd 到 Amazon LightSail

amazon-web-services - 禁止从私有(private)注册表访问的 AWS EB docker-compose 部署