Я использую официальный php: alpine https://github.com/docker-library/php/blob/master/7.2/alpine3.7/fpm/Dockerfile в качестве основного изображения.Мои проекты в основном являются композиторским проектом.Поэтому я установил композитор на него, как показано ниже.
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin -- --filename=composer
Когда я устанавливаю какие-либо пакеты, используя composer install
, он запускается как root, так как основной процесс php запускается как root.Так как же я могу запустить основной процесс php от имени root и composer от имени другого пользователя без полномочий root deploy
?
Update-1 Мой dockerfile похож на ниже.Итак, как вы можете видеть, я не устанавливаю пакеты composer внутри dockerfile, я устанавливаю эти пакеты в контейнер , как docker exec -it php composer install
.
FROM php:7.2-fpm-alpine
..........................
..........................
..........................
RUN set ex \
# Install Composer( Requires git )
&& curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin -- --filename=composer \
ENTRYPOINT ["/entrypoint.sh"]
CMD ["php-fpm"]
Я пытался достичь этого, как https://unix.stackexchange.com/questions/476155/how-to-pass-multiple-parameters-to-su-user-c-command, но тщетно.