我有一个docker-compose配置,它定义了三个容器,这些容器用于 Ubuntu 16.04 实例中的一个应用程序:
一个 nginx 容器,
一个mysql容器,
还有一个 PHP 容器,它经过了轻微的定制以包含composerand phpunit,并且是从基本php74:fpm-alpine目录派生的。此容器中的工作目录是/var/www.
我定义了一个从我的应用程序映射到容器内部的单个卷docker-compose.yml:
app-php:
volumes:
- ./src:/var/www
每当我尝试运行我的 Laravel 应用程序时,我都会收到:
The stream or file "/var/www/storage/logs/laravel.log" could not be opened: failed to open stream: Permission denied.
显然 Laravel 无法写入或读取此文件,但我不知道为什么。整个应用目录有如下权限设置:
$ la -la
-rw-rw-r-- 1 myuser www-data 213 Dec 31 07:07 aFile
drwxrwsr-x 12 myuser www-data 4096 Dec 31 07:07 aDirectory
这是通过以下命令完成的:
sudo usermod -aG www-data myuser
// myuser is now a member of the www-data group.
sudo chgrp -R www-data /var/www
sudo chmod -R g+w /var/www
sudo find /var/www -type d -exec chmod 2775 {} \;
sudo find /var/www -type f -exec chmod ug+rw {} \;
这些都不起作用。我能够让我的应用程序运行的唯一sudo chmod -R 777方法是执行,这不是一个可接受的解决方案。既不解决775也不755解决问题。
这导致了我的整体问题:我需要对我的 docker 配置或主机系统上的权限配置进行哪些更改才能运行我的应用程序?
绝地无双
互换的青春