Моя точка входа в изображение PHP выглядит примерно так.Точка входа работает как root , и это необходимо в моем случае.Поэтому любая команда, которую я запускаю в своем контейнере, запускается от имени пользователя root.Для какой-то конкретной команды я хочу запустить ее как другой пользователь, например, когда кто-то пытается выполнить docker exec -it php composer install
, composer должен запускаться как другой пользователь, установленный в точке входа.когда кто-то пытается выполнить docker exec -it php drush status
, drush должен запускаться от имени другого пользователя, установленного в точке входа.Возможно, оператор if или switch внутри точки входа может мне помочь.Я пытался что-то вроде этого https://unix.stackexchange.com/questions/476155/how-to-pass-multiple-parameters-to-su-user-c-command, но передача параметра с двойной чертой (-) нарушает некоторые команды.
Dockerfile
COPY entrypoint.sh /
ENTRYPOINT ["/entrypoint.sh"]
CMD ["php-fpm"]
entrypoint.sh
#!/bin/sh
set -e
# first arg is `-f` or `--some-option`
if [ "${1#-}" != "$1" ]; then
set -- php-fpm "$@"
fi
exec "$@"