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

Я использую официальный 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 Ответ

0 голосов
/ 01 ноября 2018

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

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

...