Php-fpm是否可以处理cli脚本?官方docker php内部发生了什么?

时间:2018-10-29 13:00:54

标签: php docker nginx composer-php docker-entrypoint

我正在为我的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

1 个答案:

答案 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