我有两个Docker容器:Nginx和App。 该应用程序容器扩展了PHP-fpm,并具有我的Laravel代码。
在我的docker-compose.yml工作中:
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服务器可写。 我应该怎么做才能解决这个问题?
使您的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。
/var/www
www-data
php-fpm
由于它是使用user编译的www-data。
参考-
https://github.com/docker- library/php/blob/57b41cfc2d1e07acab2e60d59a0cb19d83056fc1/7.0/jessie/fpm/Dockerfile