How to change permissions of a docker mounted volume on OSX to work with Nginx web server running Laravel 5.1?

I am using Docker running Laravel 5.1 to generate PDFs so my problem is the file gets generated successfully without errors and is saved to the mounted volume. The problem arises when i try to pull the file back to display it using Storage::disk('local')->get($filename); I get

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

I also tried changing the permissions from inside the docker container, and also manually on the mounted volume, it did not help.

  • Adding Flyway to a MySQL Docker Container
  • How to persist data in a dockerized postgres database using volumes
  • AWS Mesosphere: parameters for docker daemon
  • Docker: change directory command
  • How can I run a Docker container in AWS Elastic Beanstalk with non-default run parameters?
  • How do I share the contents of a file two-way between host and container?
  • Here is the code i used to save the file

        $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));
    

    Does anyone know how i can resolve this?

  • Apache, PHP, WordPress caching issue in Docker container
  • Change docker storage driver on Mac OS X
  • Can't access postgresql in a docker container from a VM
  • Vagrant docker provisioner command
  • How to run application from docker container from host OS?
  • Mean Stack Application Deployment Using Docker Failed
  • One Solution collect form web for “How to change permissions of a docker mounted volume on OSX to work with Nginx web server running Laravel 5.1?”

    Docker users are not the same as the host machine’s.
    You need to make sure that the host machine’s user and container’s user that access the mounted volume have both access to the volume’s files.

    You can achieve this in a couple ways, for example:

    1. Make the files world readable/writable
    2. Make sure the user ID of both host computer and container is the same
    3. Change permissions of the file after it’s written

    After you make the change you should be able to read/write the pdf files.

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.