desde la última actualización de la imagen acoplable php fpm ayer ( https://hub.docker.com/_/php?tab=tags&page=1&name=fpm-alpine ) mi tubería está rota porque aparentemente la versión 8 de PHP está instalada en lugar de 7.4 como en mi Dockerfile especificado.
Estoy usando esto en mi archivo docker:
FROM php:7.4-fpm-alpine AS ...Pero de acuerdo con las instalaciones de mi compositor, el contenedor tiene PHP 8.0.13 ejecutándose:
Root composer.json requires php 7.4.26 but your php version (8.0.13) does not satisfy that requirement.¿Alguien tiene una idea de lo que está pasando aquí?
Como ya mencionó Jeremy Brooks, Alpine lanzó la versión 3.15 donde el compositor requiere PHP 8 ( https://pkgs.alpinelinux.org/package/v3.15/community/x86_64/composer ). En lugar de instalar Composer desde getcomposer.org, otra solución es usar Alpine 3.14:
FROM php:7.4-fpm-alpine3.14 AS ...Es posible que haya tocado el mismo problema. Esas imágenes PHP alpinas no incluyen el compositor, entonces, ¿cómo lo instalas? Si está utilizando apk, parece que el último paquete de compositor alpino está incorporando php8 como una dependencia. Lo que resolvió este problema para mí es instalar Composer usando el script de instalación de getcomposer.org en lugar de usar apk. Suponiendo que esto es lo que está haciendo, elimine esto de su Dockerfile:
RUN apk add composery añadir:
ADD https://getcomposer.org/installer ./composer-setup.php RUN php ./composer-setup.php --install-dir=/usr/local/bin --filename=composer RUN rm ./composer-setup.phpSi el compositor está incluido en su imagen base, puede intentar desinstalarlo primero:
RUN apk delete composery luego agregue el código anterior para instalarlo desde el script de instalación.
Editar: agregar el indicador ignore-platform-reqs probablemente lo ayudará a superar el error, pero está introduciendo un posible punto de falla en el futuro si tiene un paquete de compositor con un requisito de plataforma. En ese caso, no sabrá sobre el error hasta el tiempo de ejecución. Yo no recomendaría ese enfoque. El método que publiqué anteriormente instalará Composer usando la versión de PHP que ya está en el sistema y no requerirá soluciones arriesgadas.
Actualmente estoy trabajando en mi archivo docker-compose para instalar laravel 8 con php 8.
Probé "php:7.4-fpm-alpine", y cuando accedo al contenedor obtengo esta versión de php:
/var/www/html # php --version PHP 7.4.26 (cli) (built: Nov 30 2021 08:21:51) ( NTS )Puedes probarlo tú mismo:
docker container ls docker exec -it <container_id> sh php --versionObtengo PHP 8.0.13 al instalar "php:8.0-fpm-alpine"
También estoy creando mi proyecto laravel usando la imagen del compositor , no tengo php/composer instalado localmente. Es algo que podría echar un vistazo, porque podría confundirse rápidamente ;-)