Para el desarrollo de cualquier aplicación PHP moderna necesitaremos tener instalado en local el gestor de dependencias composer.
Como es habitual esta utilidad estará disponible en los repositorios de nuestra distribución pero esto implicará instalar todas las dependencias de PHP. Si como es mi caso prefieres gestionar el entorno de desarrollo con docker esto nos llenará el sistema de paquetes PHP innecesarios y a menudo desactualizados.
Para esto casos tenemos la opción de ejecutar el mismo composer también dentro de un contenedor docker con lo que tendremos siempre la última versión disponible y el sistema local perfectamente limpio.
La página del proyecto nos indica cómo lanzar esta imagen. Como ejemplo podríamos crear un proyecto Symfony con la siguiente llamada:
docker run --rm --interactive --tty --volume $PWD:/app composer create-project symfony/skeleton:"7.0.*" my_project_directory
Si no especificamos ninguna versión, estaremos implícitamente utilizando la etiqueta latest. Habitualmente esto será lo que queremos pero si existe alguna incompatibilidad podremos especificar la versión de composer concreta o lts para la versión considerada más estable.
O más cómodamente nos podremos crear un alias en nuestro .bashrc:
alias composer="docker run --rm --interactive --tty --volume $PWD:/app composer "
Después tendremos que recargar el fichero para que los cambios surtan efecto con:
. ~/.bashrc
Y ya podremos ejecutar composer de la misma forma que si estuviese instalado de la forma tradicional.
Extensiones
En algunas ocasiones nos podemos encontrar que al hacer un composer update nos requiere una extensión PHP que no está instalada en el contenedor de composer.
En el entorno que montemos para la ejecución de la aplicación sí es necesario instalarlo pero no así en el composer.
Para evitar esta dependencia podremos pasarle el parámetro --ignore-platform-reqs y así no se hará la comprobación.
Comentarios