【发布时间】:2019-03-25 23:45:04
【问题描述】:
我的 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"]
入口点.sh
#!/bin/sh
set -e
# first arg is `-f` or `--some-option`
if [ "${1#-}" != "$1" ]; then
set -- php-fpm "$@"
fi
exec "$@"
【问题讨论】:
标签: shell docker composer-php entry-point