У меня есть контейнер с приложением PHP и php-fpm
служба не может записывать файлы кэша в папку, предоставленную томом докера.
Я дал 777 разрешений для папки, которую мне нужно написать, с хост-машины, но она работает ненадолго. Файлы, созданные php-fpm
не имеет необходимых разрешений.
Кроме того, невозможно изменить владельца и группу с chown
команда.
Это мое docker-composer.yml
файл:
web:
image: eduardoleal/nginx
external_links:
- proxy
links:
- php:php
container_name: "app-web"environment:
VIRTUAL_HOST: web.app
volumes_from:
- data
volumes:
- ./src/nginx-vhost.conf:/etc/nginx/sites-enabled/default
php:
image: eduardoleal/php56
container_name: "app-web-php"volumes_from:
- data
data:
container_name: "app-web-data"image: phusion/baseimage
volumes:
- /Users/eduardo.leal/Code/vidaclass/web:/var/www/public
Я запускаю докер на OSX с VirtualBox.
MacOS имеет некоторые проблемы с монтированием из-за различий в user
а также group
владение файлом против user
а также group
изменение / чтение файла. В качестве обходного пути выполните следующие действия (желательно с использованием последней версии) Docker:
$ brew install docker-machine-nfs
$ docker-machine start yourdockermachine
$ docker-machine-nfs yourdockermachine --shared-folder=/Users --nfs-config="-alldirs -maproot=0"
Вы можете изменить имя yourdockermachine
как вам нравится. Кроме того, у вас есть возможность изменить общую папку, которую вы хотите сопоставить. Вышеуказанный вариант является лучшим выбором и работает во всех случаях. Я бы посоветовал не менять это, чтобы не возиться с системными файлами.
После вышеописанной настройки убедитесь, что вы предоставили соответствующие разрешения на чтение, запись и выполнение для ваших файлов и папок.
НОТА: Зависимости для вышеуказанной процедуры brew
, docker-machine
(или полный набор инструментов докера для простоты)
ОБНОВЛЕНИЕ 1: Докер для Mac Beta находится в частной фазе приглашения. Он запускает Docker изначально на Mac поверх гипервизор xhyve. Это означало бы, что больше нет ошибок прав доступа и улучшена производительность.
ОБНОВЛЕНИЕ 2: Докер для Mac сейчас в публичной бета-версии. Базовая технология остается прежней, и виртуальная машина полностью управляется службой Docker. Версия на момент написания статьи 1.12.0-rc2
который работает без проблем с OS X без какого-либо вмешательства docker-machine
,
У меня тоже была эта пробема. Докер машина использует docker
пользователь и staff
группа на смонтированных томах, которые имеют UID=1000
а также GID=50
соответственно. Вы должны изменить свой php-fpm
Конфиг и заменить пользователя по умолчанию (я полагаю, это nobody
), с именем пользователя, которые имеют UID=1000
внутри контейнера. Если у вас нет такого пользователя, вам нужно создать такого пользователя. Сделайте тот же трюк для группы с GID=50
, Это очень-очень грязный взлом, но лучшего решения пока не нашел.
Если вы используете MacOSx. Вы должны изменить разрешение штатного пользователя (этот пользователь создан Docker). Пользователь по умолчанию только для чтения. Таким образом, веб-сервер не может записывать в вашу папку кеша в Docker-контейнере. Вы можете сделать и увидеть картинку ниже
chmod -R 777 cache_folder на вашем Mac.
Надеюсь, что этот ответ полезен для вас
введите описание изображения здесь
В любом случае, вы также можете использовать docker-machine-nfs для решения этой проблемы.
добавлять RUN usermod -u 1000 www-data
где-то перед EXPOSE в Dockerfile для образа eduardoleal / php56 это решит проблему с разрешениями.