"no such file or directory" 将完整路径传递给 Docker 图像时,但使用同一文件夹的相对路径

"no such file or directory" when passing full path to Docker image, but works with relative path to same folder

从 Apache 中的 PHP 页面,我正在尝试 运行 将生成 PDF 的 docker 命令。我已将我的用户和 www-data 用户添加到 docker 组,这样他们就可以在没有 sudo 的情况下执行 docker 命令。

这适用于 /home/my_user/projects/my_project/public 文件夹中的 PHP 文件:

system("docker run --rm -v `pwd`:/app -w /app weasyprint:51 ./healthcheck.htm /weasyprint_test.pdf");

但是当我指定完整路径(我已经验证是正确的)时,它不起作用:

system("docker run --rm -v `pwd`:/app -w /app weasyprint:51 /home/my_user/projects/my_project/public/healthcheck.htm /home/my_user/projects/my_project/public/weasyprint_test.pdf");

当我 运行 第二个版本时,我在 PHP 错误日志中看到了这个: su-exec: /home/my_user/projects/my_project/public/healthcheck.htm: 没有那个文件或目录

对于我的生活,我无法弄清楚为什么第一个版本可以工作而第二个版本不能,因为它们指的是相同的路径,只是通过不同的语法。如果您有任何想法,请告诉我。

如果有帮助,我正在为 Weasyprint 使用这张 Docker 图片:https://hub.docker.com/r/minidocks/weasyprint

在 Docker VM 运行 ls /home/ 上,我敢打赌您期望的目录不存在。您的路径中引用的用户可能不存在于 VM 上,仅存在于您的主机上。

相对路径有效,因为它相对于提供的根目录。