我有两个 Docker 容器:Nginx 和 App。
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服务器具有写入权限。
我应该做什么来解决这个问题?
ADD
或COPY
指令中使用--chown
标志来缩小镜像大小,例如:COPY --chown=www-data:www-data . /var/www
。在我的情况下,镜像大小从130MB减少到了100MB。 - J. Eggerstedtdocker exec -i -t (这里是你的容器ID) bash
,进入到容器本身中进行操作。 - FerdousTheWebCoder