Может ли Php-fpm обрабатывать cli-скрипт? Что происходит внутри официального докера php?

Я использую официальный Docker Php-fpm ( https://github.com/docker-library/php/blob/master/7.2/alpine3.8/fpm/Dockerfile) и официальный образ Nginx для моего сайта php. Я настроил Nginx для общения с php-fpm через порт 9000. Точка входа в докер приведена ниже.

#!/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

1 ответ

Решение

exec "$@" только выполняет команду, определенную как CMD в файле Dockerfile/Docker-compose, только один раз, когда контейнер создается изначально. Как только контейнер запустится и вы захотите выполнить на нем любую команду, эта команда из docker exec не отменяет эту CMD["php-fpm"]

Также скрипт композитора использует php-cli, а не php-fpm. https://github.com/dbjpanda/composer/blob/70557f3ab7b84a896179396509611fae66b19773/bin/composer

Другие вопросы по тегам