0

我正在为我的 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#-}" != "$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
4

1 回答 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

于 2018-11-01T07:00:36.900 回答