Как говорится в документах :
ВНИМАНИЕ! Не распространяйте код установки повторно. Он будет меняться с каждой версией установщика. Вместо этого укажите ссылку на эту страницу.
раздражает использование установочного кода, предоставленного в Dockerfile, поскольку проверка SHA-384 очень скоро устареет, и мы будем получать печальное сообщение Installer corrupt
каждый раз, когда пытаемся создать контейнер.
Раньше мне нравилась однострочная установка, но я знаю, что в ней есть проблема с повреждением.
Итак, каковы рекомендации по его использованию в Dockerfile? Следует ли нам продолжать использовать однострочную установку, описанную выше? Это должно быть в документации?
curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
Я думаю, что для Docker, вероятно, лучше всего использовать известный стабильный выпуск и загрузить его напрямую.
Например:
wget https://getcomposer.org/download/1.1.3/composer.phar
# or if you want snapshot
wget https://getcomposer.org/composer.phar
Я знаю, что это не обеспечивает такой же безопасности, как сценарий установки.
Другой вариант - зафиксировать composer.phar в репозитории, который также содержит Dockerfile, а затем просто использовать этап COPY, чтобы скопировать его в контейнер во время сборки.
В случае Docker это также можно проверить путем объединения команд, как если бы какая-либо из них не выполнялась в операторе RUN, сборка всего образа также завершилась бы ошибкой:
RUN echo "$(curl -sS https://composer.github.io/installer.sig) -" > composer-setup.php.sig \
&& curl -sS https://getcomposer.org/installer | tee composer-setup.php | sha384sum -c composer-setup.php.sig \
&& php composer-setup.php -- --install-dir=/root/bin --filename=composer
Это очень распространено для проверки подписи, см., Например, официальный файл докеров php .
Самый полезный комментарий
https://getcomposer.org/doc/faqs/how-to-install-composer-programmatically.md