Я занимаюсь разработкой PHP-приложения и застрял с томами Docker. Я пытался создать отдельный контейнер только для данных для моего приложения PHP, но не смог заставить его работать из-за проблем с разрешениями … Я погуглил и прочитал все, что мог, и самое близкое к рабочему решению здесь описано
Но оно немного старое, и я тоже не смог заставить его работать.
Я создал репо с простым тестовым кодом:
https://github.com/oleynikd/docker-volumes-permissions/
Этот простой проект использует docker-compose для запуска 2-х контейнеров:
Код 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, но это не помогло.
Итак, вопросы:
Я уверен, что решение простое, но я не могу его найти.
Пожалуйста помоги!
Постскриптум Не стесняйтесь участвовать в репо, если вы знаете, как решить эту проблему.
Владелец файлов 1000:staff
так как 1000:1000
это uid:gid
владельца файлов на хост-машине.
Вы можете избежать этого, используя тома без указания пути к файлам на хост-машине и добавления файлов с помощью COPY
инструкция в докер-файле. Но, возможно, вы необходимость легко получить доступ к файлам тезисов на хосте?
Для сред разработки (и только среды разработки) я использую хакерское решение, которое я описал в этом ответе управлять этим.
Других решений пока нет …