Como diz a documentação :
AVISO: Não redistribua o código de instalação. Isso mudará com cada versão do instalador. Em vez disso, conecte-se a esta página.
é irritante usar o código de instalação fornecido lá em um Dockerfile, pois a verificação SHA-384 ficará obsoleta muito em breve e receberemos uma mensagem Installer corrupt
triste toda vez que tentarmos construir o contêiner.
Eu costumava gostar da instalação de uma linha, mas sei que tem o problema de corrupção.
Então, quais são as diretrizes para usá-lo em um Dockerfile? Devemos continuar usando a instalação de uma linha acima? Deve estar nos documentos?
curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
Acho que para o Docker, provavelmente é melhor usar uma versão estável conhecida e baixá-la diretamente.
Por exemplo:
wget https://getcomposer.org/download/1.1.3/composer.phar
# or if you want snapshot
wget https://getcomposer.org/composer.phar
Sei que isso não oferece a mesma segurança que o script de instalação oferece.
Outra opção seria confirmar o composer.phar no repositório que também contém o Dockerfile e, em seguida, simplesmente usar uma etapa COPY para copiá-lo para o contêiner no momento da construção.
No caso do Docker, isso também pode ser verificado encadeando comandos, como se algum deles falhasse na instrução RUN, a construção da imagem inteira também falharia:
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
É muito comum ter isso para verificações de assinaturas, veja dockerfile oficial do php, por exemplo.
Comentários muito úteis
https://getcomposer.org/doc/faqs/how-to-install-composer-programmatically.md