Запуск Composer внутри контейнера Docker от имени пользователя хоста - PullRequest
0 голосов
/ 21 сентября 2018

Я столкнулся с довольно странной проблемой, связанной с Docker Composer.Дело в том, что Composer, работающий на разных версиях PHP, устанавливает разные версии исходников.В моем конкретном случае для проекта composer.json требуется "doctrine/orm":"2.5", который в свою очередь объявляется как PHP 5-совместимый .И если я запускаю composer install на локальном интерпретаторе CLI PHP 7, он устанавливает версию дерева кода, совместимую только с PHP7, и я получаю много E_PARSE, поскольку код Doctrine имеет модификаторы видимости констант класса и типы возвращаемых функций.Если я запускаю composer install внутри моего php:5-apache-jessie контейнера, все в порядке (за исключением некоторых проблем ниже), и проект успешно выполняется.

Итак, кажется, нам не следует использовать локальный интерпретатор, чтобы иметь правильные источники в проекте.Давайте запустим composer внутри контейнера.Когда я запускаю его вручную, появляется предупреждение о том, что Composer не запускается от имени пользователя root, и у нас есть корневой каталог, который не годится.Если мы выполняем exec в контейнер, мы все равно не можем запустить что-то вроде sudo -u www-data -c 'composer install', так как www-data пользователь не имеет логина.Я не могу просто добавить RUN composer install, так как у меня нет смонтированного тома в данный момент при создании образа при запуске с docker-compose.

Я думаю, в идеальной ситуации мы могли бы запускать все команды контейнера как пользователь хоста.Но когда я попытался использовать директиву USER в Dockerfile, установив ее в свой UID, контейнер просто даже не запустился.

Итак, возникает вопрос: какой рабочий процесс нужно использовать, чтобы иметь правильный (средства, связанные сфактическая среда сервера) версия зависимостей Composer при запуске проекта PHP внутри контейнера Docker?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...