从docker nginx / php-fpm安装在本地卷(Mac)上的Laravel无法写入会话文件

我有一个docker-compose.yml文件,运行以下命令(创build名为mmm / nginx的映像):

web: image: mmm/nginx ports: - "80:80" volumes: - ./var:/var/www - ./etc/nginx/sites-enabled:/etc/nginx/sites-enabled/ links: - php - db php: image: rossriley/php56-fpm volumes: - ./var:/var/www - ./etc/php5/php-fpm.conf:/etc/php5/fpm/php-fpm.conf links: - db db: image: sameersbn/mysql ports: - "3306:3306" volumes: - /var/lib/mysql environment: - DB_NAME=tables - DB_USER=table - DB_PASS=pass 

它很好地提供了存储在/var/www

当它尝试写入日志并尝试写入会话文件时,会发生该问题。 虽然创build的文件,它不能写。

storage的文件夹及其嵌套目录的权限设置为777

为了让laravel写信给他们,我必须$ chmod 777 <.log|sessionfile> ,它很好地工作。 显然,这不是开发的方式,因为我需要定期开始新的会议并每天创build新的日志。

我如何给laravel和docker容器写入他们创build的文件的权限?

更新:这是laravel的日志说:

 local.ERROR: exception 'ErrorException' with message 'file_put_contents(/var/www/com.mtrinteractive.sandbox.form/storage/framework/sessions/e0117b8ca17af9c19572ddb305a272b4c22bd18d): failed to open stream: Permission denied' in /var/www/com.mtrinteractive.sandbox.form/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:81 

更新#2

这是项目目录:

在这里输入图像说明

更新#3

这里是项目的权限和所有者:

在这里输入图像说明

在这里输入图像说明

在这里输入图像说明

我不知道这是否有帮助,但如果你使用Dockerfile,你可以添加

运行usermod -u 1000 nginx

或者如果你使用Apache,你可以分。 nginx的Apache。

这似乎只是OS X的一个问题,这个问题实际上是与VirtualBox有关,而不是与Docker直接相关。 我在Docker v1.9.x中遇到过这个问题,现在又在v1.10.3中遇到了这个问题。 这一次,我无法用上述解决scheme解决它,但能够通过将我的caching写入数据库来解决它。 在这种情况下,它是MySQL / MariaDB,但可以很容易地被memcache或redis。

奇怪的是,创build日志文件并写入他们是不是一个问题,即使卷是独立安装,但源于我的Mac相同的文件夹“/用户”。