我有两个 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后,尝试localhost时出现以下错误
无法打开流或文件“/var/www/storage/logs/laravel.log”:无法打开流:权限被拒绝
据我了解,存储文件夹需要由网络服务器写入。
我应该怎么做才能解决这个问题?
原文由 Anand Naik B 发布,翻译遵循 CC BY-SA 4.0 许可协议
使您的 Dockerfile 如下所示 -
这使得目录
/var/www
归 --- 拥有,这是 ---php-fpm
www-data
的默认用户。由于它是使用用户
www-data
编译的。参考-
https://github.com/docker-library/php/blob/57b41cfc2d1e07acab2e60d59a0cb19d83056fc1/7.0/jessie/fpm/Dockerfile