У меня есть сервер 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). Можно ли получить доступ к файлам внутри Docker-контейнера через php (который находится на локальном сервере)?
Вы можете использовать docker cp, чтобы указать docker копировать эти файлы из контейнера на локальный компьютер.
docker cp <containerId>:/file/path/within/container /host/path/target
чтобы получить идентификатор контейнера, который вы можете запустить
docker ps
Если я правильно понимаю, PHP работает на вашем локальном компьютере, и вы хотите проверить, существует ли файл в работающем Docker-контейнере.
Независимо от того, имеет ли PHP доступ к той части файловой системы, которая находится за пределами корня документа, или имеет ли он разрешение на выполнение команд оболочки (обе проблемы безопасности), я все равно использовал бы другой подход.
/opt/Restcomm-JBoss-AS7/standalone/deployments/restcomm.war/recordings/
Обратите внимание, что таким образом ваши записи будут также упорствовать через перезапуски / сбои контейнера Docker, что, я думаю, важно …