Как запустить composer от имени пользователя root на официальном образе php докера - PullRequest
0 голосов
/ 18 октября 2018

Я использую официальный 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, но тщетно.

1 Ответ

0 голосов
/ 29 января 2019

Если кто-то хочет достичь того же, что я хотел сделать, как показано ниже.

Я добавил USER в dockerfile, чтобы в будущем композитор запускался как пользователь deploy.Но php-fpm должен быть запущен от имени пользователя root.Поэтому я установил бит setuid для двоичного файла php-fpm.И теперь все решено.

RUN chmod u+s /usr/sbin/php-fpm7

USER deploy
ENTRYPOINT ["/entrypoint.sh"]
CMD ["php-fpm7","-F"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...