В этой статье я расскажу, как я решил проблему с правами на файлы, которая проявляется при разработке веб-приложений с использованием Docker и контейнеров php-fpm, nginx, node.
Суть проблемы заключается в следующем. Предположим, что у вас выполнены следующие условия:
- на вашей машине установлена ОС из семейства Linux, например, Ubuntu
- вы логинитесь и работаете не root-пользователем, например, пользователь ubuntu с id = 1000
- используете образы php-fpm, nginx, node из официального репозитория Docker Hub
- исходный код вы редактируете не в докере, а на хост-машине, монтируя директорию с ним в докер-контейнеры
В такой ситуации получается, что владелец файлов исходного кода `id=1000`, а файлы, создаваемые приложением в процессе работы web-сервера (аплоад, кеши, логи и прочее) имеют владельца `id=33`, при этом права на запись у них есть только владельцу. Кроме того, файлы, создаваемые из консоли, например, файлы миграции, файлы кодогенерации, кеши, логи, ассеты, собираемые и публикуемые с помощью npm , будут созданы от имени root-пользователя, если не выполнять `docker run –user` с явным указанием пользователя. Даже если указать локального пользователя для выполнения команд от его имени, то могут возникнуть проблемы с правами записи кеша самих инструментов composer, npm. Все вышеописанные файлы не получится ни редактировать, ни сменить права без root-пользователя. Это и есть проблема.