Como dice la documentación :
ADVERTENCIA: No redistribuya el código de instalación. Cambiará con cada versión del instalador. En su lugar, enlace a esta página.
Es molesto usar el código de instalación provisto allí en un Dockerfile, ya que la verificación SHA-384 quedará obsoleta muy pronto y recibiremos un triste mensaje Installer corrupt
cada vez que intentemos construir el contenedor.
Me gustaba la instalación de una sola línea, pero sé que tiene un problema de corrupción.
Entonces, ¿cuáles son las pautas para usarlo en un Dockerfile? ¿Deberíamos seguir usando la instalación de una línea anterior? ¿Debería estar en los documentos?
curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
Creo que para Docker, probablemente sea mejor usar una versión estable conocida y descargarla directamente.
P.ej:
wget https://getcomposer.org/download/1.1.3/composer.phar
# or if you want snapshot
wget https://getcomposer.org/composer.phar
Sé que esto no le ofrece la misma seguridad que proporciona el script de instalación.
Otra opción sería confirmar composer.phar en el repositorio que también contiene el Dockerfile, y luego simplemente usar un paso COPY para copiarlo en el contenedor en el momento de la compilación.
En el caso de Docker, también se puede verificar encadenando comandos, ya que si alguno de ellos falla en la instrucción RUN, la compilación completa de la imagen también fallaría:
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
Es muy común tener esto para las verificaciones de firmas, consulte php official dockerfile, por ejemplo.
Comentario más útil
https://getcomposer.org/doc/faqs/how-to-install-composer-programmatic.md