权限被拒绝错误使用 Laravel & Docker

2022-08-30 13:32:16

我有两个docker容器:Nginx和App.
应用程序容器扩展了PHP-fpm,并且还有我的Laravel代码。

在我的我正在做:docker-compose.yml

version: '2'
services:
    nginx:
        build:
            context: ./nginx
            dockerfile: ./Dockerfile
        ports:
            - "80:80"
        links:
            - app
    app:
        build:
            context: ./app
            dockerfile: ./Dockerfile

在我的Nginx Dockerfile中,我正在做:

FROM nginx:latest
WORKDIR /var/www
ADD ./nginx.conf /etc/nginx/conf.d/default.conf
ADD . /var/www
EXPOSE 80

在我的应用程序Dockerfile中,我正在做:

FROM php:7-fpm
WORKDIR /var/www
RUN apt-get update && apt-get install -y libmcrypt-dev mysql-client && docker-php-ext-install mcrypt pdo_mysql
ADD . /var/www

成功运行 docker-compose up 后,我在尝试本地主机时出现以下错误

无法打开流或文件“/var/www/storage/logs/laravel.log”:无法打开流:权限被拒绝

根据我的理解,存储文件夹需要由Web服务器写入。
我应该做些什么来解决这个问题?


答案 1

让你的 Dockerfile 如下所示 -

FROM php:7-fpm
WORKDIR /var/www
RUN apt-get update && apt-get install -y libmcrypt-dev mysql-client && docker-php-ext-install mcrypt pdo_mysql
ADD . /var/www
RUN chown -R www-data:www-data /var/www

这使得 其拥有的目录成为 的默认用户。/var/wwwwww-dataphp-fpm

由于它是使用用户编译的。www-data

参考资料-

https://github.com/docker-library/php/blob/57b41cfc2d1e07acab2e60d59a0cb19d83056fc1/7.0/jessie/fpm/Dockerfile


答案 2

我发现了类似的问题,我通过以下方式修复了它

chown -R www-data:www-data /var/www

chmod -R 755 /var/www/storage

推荐