一尘不染

使用Laravel和Docker的权限被拒绝错误

docker

我有两个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

在我的App 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后,尝试localhost时出现以下错误

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

据我了解,该存储文件夹需要Web服务器可写。
我应该怎么做才能解决这个问题?


阅读 587

收藏
2020-06-17

共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/www拥有,www-data该目录是的默认用户php-fpm

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

参考-

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

2020-06-17