如何更改OSX上的docker mounted volume的权限,以便与运行Laravel 5.1的Nginx Web服务器一起使用?

我正在使用运行Laravel 5.1的Docker生成PDF,所以我的问题是文件生成成功,没有错误,并保存到挂载的卷。 当我试图拉文件回来显示它使用Storage::disk('local')->get($filename); 我明白了

 ErrorException in Local.php line 187: file_put_contents(/app/storage/app/savedfile.pdf): failed to open stream: Permission denied. 

我也尝试更改docker容器内的权限,也手动地在安装的卷,它没有帮助。

这是我用来保存文件的代码

  $snappy = new Pdf('wkhtmltopdf'); $tmpFile = storage_path().'/app/savedfile.pdf'; $snappy->setOption('images', true); $snappy->setOption('footer-right', '[page] OF [topage]'); $result = $snappy->generateFromHtml( $view->render(), $tmpFile ); Storage::disk('local')->put('report.pdf', \File::get($tmpFile)); 

有谁知道我可以解决这个问题?

Docker用户与主机不一样。 您需要确保访问已装入卷的主机的用户和容器的用户都可以访问卷的文件。

您可以通过几种方式实现这一点,例如:

  1. 使文件世界可读/可写
  2. 确保主机和容器的用户ID是相同的
  3. 写入文件后,更改文件的权限

在你做出改变后,你应该可以读/写PDF文件。

花了我一段时间来尝试解决这个问题,但是当苹果公司的docker被发布时,我很快就转移到了它,从那之后我就没有权限问题。

所以我建议你结账Docker for Mac