首页 > 解决方案 > 由于权限问题,无法在 docker 容器内运行 Laravel 应用程序

问题描述

我有一个docker-compose配置,它定义了三个容器,这些容器用于 Ubuntu 16.04 实例中的一个应用程序:

我定义了一个从我的应用程序映射到容器内部的单个卷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 配置或主机系统上的权限配置进行哪些更改才能运行我的应用程序?

标签: phplaraveldockerpermissionsubuntu-16.04

解决方案


据我了解,它与主机文件系统中的用户权限无关,而是感觉像是在 docker 容器中使用的 USER 权限存在问题。看看以下链接是否对您有帮助 - https://docs.docker.com/engine/reference/builder/#user


推荐阅读