简而言之:
我能够将Docker容器中的nginx用户-www-data:www-data
设置为主机上文件夹的所有者。为什么这项工作?
长版:
我已经在阅读本教程Laravel development with docker的过程中为本地Laravel开发创建了一个安装程序,最后得到了以下文件结构:
Docker撰写:
version: '2'
services:
web:
build:
context: ./
dockerfile: deploy/web.docker
volumes:
- ./:/var/www
ports:
- "8080:80"
links:
- app
app:
build:
context: ./
dockerfile: deploy/app.docker
volumes:
- ./:/var/www
links:
- database
- cache
environment:
- "DB_PORT=3306"
- "DB_HOST=database"
- "REDIS_PORT=6379"
- "REDIS_HOST=cache"
database:
image: mysql:5.6
environment:
- "MYSQL_ROOT_PASSWORD=secret"
- "MYSQL_DATABASE=dockerApp"
ports:
- "33061:3306"
cache:
image: redis:3.0
ports:
- "63791:6379"
部署/app.docker:
FROM php:7-fpm
WORKDIR /var/www
RUN apt-get update && apt-get install -y libmcrypt-dev mysql-client \
&& docker-php-ext-install pdo_mysql
部署/web.docker:
FROM nginx:1.10
ADD ./deploy/vhost.conf /etc/nginx/conf.d/default.conf
WORKDIR /var/www
当我做一个docker-compose up
时,遇到并出错,因为访问被拒绝,它无法访问storage/logs/laravel.log
。然后,我确实在主机上将所有者更改为www-data:www-data
,但问题却消失了,但实际上我不明白为什么要这样做?我的主机上没有Nginx,这意味着我的主机可以使用容器中的Nginx用户吗?