flapflapjack
@flapflapjack
на треть я прав

Как правильно выставить права для контейнера Docker?

Ребята девчата, привет.
Подскажите пожалуйста, в чем моя ошибка в даннм случае.

Я запускаю Docker-контейнер с пробросом в него локальной папки
docker run -d --rm --name devilbox-php-fpm-5-3 -p 9000:9000  -v /var/www/site.ru/www:/var/www/default/htdocs devilbox/php-fpm-5.3

а в апаче при этом в vhosts у одного сайта указал sethandler для файлов .php, чтобы апач их обрабатывал через контейнер через порт 9000.
и все у меня замечательно заработало! Почти все...

При обращении к некоторым файлам .php я получаю ошибку 500, при этом в логах докер-контейнера вижу, что php-fpm в контейнере ругается на Premission denied запрашиваемого файла.

В файлы в папке на хост-машине имеют права
-rwxr-x-r-x www-data:www-data index.php
А php-fpm в контейнере работает от имени www-data.

Но если сделать например chmod 777 index.php то все работает.
Также если зайти в консоль контейнера, и попробовать изменить файл в примонтированной директории с файлами, то они меняются и на хост-машине. То есть с доступом на запись все ок.

Вот тут то я и запутался:

Какие права нужно устновить файлам, или наоборот, как запустить контейнер, чтобы php-fpm в контейнере имел доступ к этим файлам.

У меня в голове такая каша нарисовалась:
- хостмашина(root) имеет доступ на чтение/выполнение файла
- хостмашина(www-data) имеет доступ на чтение/выполнение файла
- контейнер(root) имеет доступ на чтение/выполнение файла
- контейнер(www-data) НЕ имеет доступ на чтение/выполнение файла
  • Вопрос задан
  • 233 просмотра
Пригласить эксперта
Ответы на вопрос 1
проверьте id внутри и снаружи надо чтоб совпадали у аккаунта www-datа

на хосте узнайте
id -u 
id -g

и может задайте

export HOST_USER=$(id -u):$(id -g)на контейнере

например так
RUN addgroup -S $GROUP_NAME \
  && adduser -h /home/$USER_NAME -u $UID -s /bin/sh -D -G $GROUP_NAME $USER_NAME \
  && chown -R $USER_NAME:$GROUP_NAME  список директорий каких надо

USER $USER_NAME
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы