正如文档所说:
警告:请不要重新分发安装代码。 它会随着安装程序的每个版本而改变。 相反,请链接到此页面。
使用 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 官方 dockerfile 。
最有用的评论
https://getcomposer.org/doc/faqs/how-to-install-composer-programmatically.md