我在我的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
exec "$@"
仅在最初创建容器时执行一次在Dockerfile / Docker-compose文件中定义为CMD的命令。一旦容器启动并且你想在其上运行任何命令,那么来自docker exec
的命令不会覆盖那个CMD [“php-fpm”]
另外作曲家脚本使用php-cli而不是php-fpm。 https://github.com/dbjpanda/composer/blob/70557f3ab7b84a896179396509611fae66b19773/bin/composer#L4