У меня есть настройка docker-compose, идеально работающая на моем локальном компьютере для моих проектов symfony с nginx, php7-fpm и mysql.
Мне часто нужно устанавливать новые пакеты через композитор, поэтому я просто доставляю команду в свой контейнер php-fpm следующим образом:
docker-compose exec my-php-fpm-container composer install
Проблема в том, что все пакеты устанавливаются как root, поэтому мне приходится каждый раз что-то устанавливать.
Я знаю, что флаг "--user" существует, но если я его использую, он выдает следующую ошибку:
ОШИБКА: нет такой услуги: композитор
Есть ли способ запустить команду docker-compose exec в качестве пользователя локального компьютера, чтобы новые файлы и папки, установленные для нового композитора, создавались с моей локальной собственностью пользователя Linux, а не с root?
Проведя небольшое исследование, я только что понял, что изображение php7-fpm, которое я использую, имеет некоторые встроенные пользователи, такие как www-data (совместимые с моей фактической конфигурацией коробки). Поэтому мне просто пришлось использовать флаг «--user www-data» вместе с командой, чтобы использовать композитор внутри контейнера и сохранить файлы с правильными разрешениями.
docker-compose exec --user www-data mycontainer composer install