Разрешения контейнера данных только для Docker

Я занимаюсь разработкой PHP-приложения и застрял с томами Docker. Я пытался создать отдельный контейнер только для данных для моего приложения PHP, но не смог заставить его работать из-за проблем с разрешениями … Я погуглил и прочитал все, что мог, и самое близкое к рабочему решению здесь описано

Но оно немного старое, и я тоже не смог заставить его работать.

Я создал репо с простым тестовым кодом:
https://github.com/oleynikd/docker-volumes-permissions/

Этот простой проект использует docker-compose для запуска 2-х контейнеров:

  1. Для php fpm
  2. Для nginx

Код php сопоставляется с контейнером php и живет в /src каталог.

Основная проблема заключается в том, что PHP не имеет прав на запись в каталог кода, потому что он работает как WWW-данные пользователь, но каталог кода принадлежит пользователю с идентификатором 1000 и группа штат сотрудников.

После запуска docker-compose и посещения /index.php вы увидите предупреждение и ls -lah вывод, который показывает проблему разрешения. Вот скриншот:введите описание изображения здесь

Я пытался это исправить, добавив RUN mkdir -p /src && chown -R www-data:www-data /src php Dockerfile, но это не помогло.

Итак, вопросы:

  1. Почему владельцем и группой / src является 1000: персонал?
  2. Как это исправить?

Я уверен, что решение простое, но я не могу его найти.
Пожалуйста помоги!

Постскриптум Не стесняйтесь участвовать в репо, если вы знаете, как решить эту проблему.

0

Решение

Владелец файлов 1000:staff так как 1000:1000 это uid:gid владельца файлов на хост-машине.

Вы можете избежать этого, используя тома без указания пути к файлам на хост-машине и добавления файлов с помощью COPY инструкция в докер-файле. Но, возможно, вы необходимость легко получить доступ к файлам тезисов на хосте?

Для сред разработки (и только среды разработки) я использую хакерское решение, которое я описал в этом ответе управлять этим.

0

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

Других решений пока нет …

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