Вкратце:
Мне удалось установить пользователя nginx - www-data:www-data
из контейнера Docker как владельца папки на хост-компьютере.Почему это работает?
Длинная версия:
Я создавал установку для локальной разработки Laravel, читая этот учебник - Разработка Laravel с помощью Docker и закончиласьследующая структура файла:
Состав 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"
deploy / 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
deploy / 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 из контейнера доступен для моего хост-компьютера?