通过php访问docker容器内的文件

问题描述 投票:0回答:2

我在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容器内的文件?

php docker jboss shell-exec restcomm
2个回答
1
投票

您可以使用docker cp告诉docker将容器中的文件从容器复制到本地计算机

docker cp <containerId>:/file/path/within/container /host/path/target

获取您可以运行的containerId

docker ps

0
投票

如果我理解正确,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容器的重启/崩溃中持续存在,我认为这很重要......

© www.soinside.com 2019 - 2024. All rights reserved.