我正在为我的php网站使用官方Docker Php-fpm(https://github.com/docker-library/php/blob/master/7.2/alpine3.8/fpm/Dockerfile)和官方Nginx Image。我已配置Nginx通过端口9000与php-fpm进行通信。Docker的入口点如下。
#!/bin/sh
set -e
# first arg is `-f` or `--some-option`
if [ "${1#-}" != "$1" ]; then
set -- php-fpm "$@"
fi
exec "$@"
您可以看到,当我们尝试执行docker exec -it container whoami
之类的命令时,它的前缀为php-fpm
。
所以我的问题是,当我传递一个PHP cli脚本,例如docker exec -it container composer install
时,它是如何解释的? composer install
是否由php-fpm或php-cli(/ usr / local / bin / php)处理?
据我所知,作曲家是一个cli脚本,如下所示安装,应由php-cli处理。
curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin -- --filename=composer
答案 0 :(得分:0)
exec "$@"
仅在最初创建容器时仅执行一次在Dockerfile / Docker-compose文件中定义为CMD的命令。一旦容器启动并且您要在其上运行任何命令,那么来自docker exec
的命令将不会覆盖该CMD [“ php-fpm”]
作曲家脚本也使用php-cli而不是php-fpm。 https://github.com/dbjpanda/composer/blob/70557f3ab7b84a896179396509611fae66b19773/bin/composer#L4