Php-fpm 可以处理 cli 脚本吗?官方dockerphp内部发生了什么?
Does Php-fpm can process a cli script? What is happening inside official docker php?
我正在为我的 php 网站使用官方 Docker Php-fpm (https://github.com/docker-library/php/blob/master/7.2/alpine3.8/fpm/Dockerfile) 和官方 Nginx 图像。我已将 Nginx 配置为通过端口 9000 与 php-fpm 通信。docker 的入口点如下所示。
#!/bin/sh
set -e
# first arg is `-f` or `--some-option`
if [ "${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) 处理的?
据我所知,composer 是一个 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
我正在为我的 php 网站使用官方 Docker Php-fpm (https://github.com/docker-library/php/blob/master/7.2/alpine3.8/fpm/Dockerfile) 和官方 Nginx 图像。我已将 Nginx 配置为通过端口 9000 与 php-fpm 通信。docker 的入口点如下所示。
#!/bin/sh
set -e
# first arg is `-f` or `--some-option`
if [ "${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) 处理的?
据我所知,composer 是一个 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