Как обработать разрешение внутри тома из докера?

У меня есть контейнер с приложением 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.

1

Решение

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,

2

Другие решения

У меня тоже была эта пробема. Докер машина использует docker пользователь и staff группа на смонтированных томах, которые имеют UID=1000 а также GID=50 соответственно. Вы должны изменить свой php-fpm Конфиг и заменить пользователя по умолчанию (я полагаю, это nobody), с именем пользователя, которые имеют UID=1000 внутри контейнера. Если у вас нет такого пользователя, вам нужно создать такого пользователя. Сделайте тот же трюк для группы с GID=50, Это очень-очень грязный взлом, но лучшего решения пока не нашел.

2

Если вы используете MacOSx. Вы должны изменить разрешение штатного пользователя (этот пользователь создан Docker). Пользователь по умолчанию только для чтения. Таким образом, веб-сервер не может записывать в вашу папку кеша в Docker-контейнере. Вы можете сделать и увидеть картинку ниже

chmod -R 777 cache_folder на вашем Mac.

Надеюсь, что этот ответ полезен для вас

введите описание изображения здесь

В любом случае, вы также можете использовать docker-machine-nfs для решения этой проблемы.

2

добавлять RUN usermod -u 1000 www-data где-то перед EXPOSE в Dockerfile для образа eduardoleal / php56 это решит проблему с разрешениями.

2
По вопросам рекламы [email protected]