Laravel instalado em um volume local (Mac) do docker nginx / php-fpm não pode gravar arquivos de session

Eu tenho um arquivo docker-compose.yml que executa o seguinte (crie a imagem chamada 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 

Ele serve bem os sites que são armazenados em /var/www

A questão acontece quando tenta escrever nos logs e tenta escrever arquivos de session. Embora crie os arquivos, não pode gravá-los.

A pasta para o storage e seus diretórios nesteds tem as permissions definidas para 777 .

Para que laravel escreva para eles, eu tenho $ chmod 777 e funciona bem. Claramente, esta não é a maneira de se desenvolver, pois preciso iniciar novas sessões regularmente e criar novos logs diariamente.

Como posso dar permissions aos laravel e docker containers para escrever os arquivos que eles criam?

Atualização: é o que o log de laravel diz:

 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 

Atualização # 2

Aqui está o diretório do projeto:

insira a descrição da imagem aqui

Atualização # 3

Aqui estão as permissions e os proprietários do projeto:

insira a descrição da imagem aqui

insira a descrição da imagem aqui

insira a descrição da imagem aqui

Eu não sei se esta ajuda, mas se você estiver usando um Dockerfile você pode adicionar

FUNCIONE usermod -u 1000 nginx

ou se você estiver usando o Apache, pode sub. nginx para apache.

Isso parece ser apenas um problema para o OS X e o problema é realmente algo a ver com o VirtualBox e não diretamente relacionado ao Docker. Eu tive esse problema com o Docker v1.9.x e agora novamente com v1.10.3. Desta vez, não consegui resolvi-lo com a solução acima, mas conseguiu resolvê-lo escrevendo meu cache para um database. Neste caso, era MySQL / MariaDB, mas poderia ter sido facilmente memcache ou redis.

Curiosamente, a criação de arquivos de log e escrever para eles não foi um problema, mesmo que o volume seja montado separadamente, mas originado na mesma pasta ‘/ Usuários’ do meu Mac.