Php-fpm能否处理cli脚本?官方docker php里面发生了什么?

问题描述 投票:0回答:1

我在我的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
php docker nginx composer-php docker-entrypoint
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.