通过php访问docker容器内的文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过php访问docker容器内的文件相关的知识,希望对你有一定的参考价值。
我在docker上有jboss服务器,我正在尝试检查php是否保存了音频文件。如果文件存在,我想将其复制到本地计算机。
$location = shell_exec('docker exec -it name3 /bin/bash -c cd .**********; ls');
$filepath = $location;
if (file_exists($filepath)) {
//copy that file to local machine
}
echo $filepath;
但对于$ location,我在htdocs(xampp)中找到文件夹。是否可以通过php(在本地服务器上)访问docker容器内的文件?
答案
您可以使用docker cp告诉docker将容器中的文件从容器复制到本地计算机
docker cp <containerId>:/file/path/within/container /host/path/target
获取您可以运行的containerId
docker ps
另一答案
如果我理解正确,PHP正在您的本地计算机上运行,并且您想检查运行的docker容器中是否存在文件。
无论PHP是否可以访问doc根目录之外的文件系统部分,或者它是否有权执行shell命令(两者都是安全问题),我仍然会使用不同的方法。
- 使用docker volume存储录音。
- 将音量安装在您正在检查的路径上 - 即
/opt/Restcomm-JBoss-AS7/standalone/deployments/restcomm.war/recordings/
- 将docker卷的主机路径设置在PHP对文件系统具有读访问权限的位置
- 使用PHP检查文件是否存在,而不使用任何shell命令。例如https://secure.php.net/manual/en/function.file-exists.php
请注意,这样你的录音也会在docker容器的重启/崩溃中持续存在,我认为这很重要......
以上是关于通过php访问docker容器内的文件的主要内容,如果未能解决你的问题,请参考以下文章