PHP-FPM Alpine DockerImage 7.4安装PHP版本8.0
PHP-FPM Alpine Docker Image 7.4 installs PHP version 8.0
自从昨天最新的 php fpm docker 图像更新 (https://hub.docker.com/_/php?tab=tags&page=1&name=fpm-alpine) 以来,我的管道坏了,因为显然 PHP 安装了版本 8 而不是我的 7.4指定了 Dockerfile。
我在我的 docker 文件中使用它:
FROM php:7.4-fpm-alpine AS ...
但是根据我的作曲家安装容器有 PHP 8.0.13 运行:
Root composer.json requires php 7.4.26 but your php version (8.0.13) does not satisfy that requirement.
有人知道这是怎么回事吗?
我今天遇到了同样的问题...
尝试:
- composer install --no-scripts --ignore-platform-reqs
帮我修好了。
我可能遇到了同样的问题。那些 alpine PHP 图像不包括作曲家,那么你如何安装它?如果您使用的是 apk,看起来 latest alpine composer package 正在将 php8 作为依赖项拉入。为我解决这个问题的方法是使用 getcomposer.org 中的安装脚本而不是使用 apk 安装 composer。
假设这是你正在做的,从你的 Dockerfile 中删除它:
RUN apk add composer
并添加:
ADD https://getcomposer.org/installer ./composer-setup.php
RUN php ./composer-setup.php --install-dir=/usr/local/bin --filename=composer
RUN rm ./composer-setup.php
如果composer确实包含在你的基础镜像中,你可以先尝试卸载:
RUN apk delete composer
然后添加上面的代码以从安装脚本安装它。
编辑:添加 ignore-platform-reqs 标志可能会让你克服错误,但如果你有作曲家,你会在未来引入一个可能的失败点具有平台要求的包。在这种情况下,您直到运行时才会知道错误。我不推荐这种方法。我在上面发布的方法将使用系统上已有的 PHP 版本安装作曲家,并且不需要有风险的解决方法。
正如 Jeremy Brooks 已经提到的,Alpine 发布了 3.15 版,其中 composer 需要 PHP 8 (https://pkgs.alpinelinux.org/package/v3.15/community/x86_64/composer)。不是从 getcomposer.org 安装作曲家,另一种解决方案是使用 Alpine 3.14:
FROM php:7.4-fpm-alpine3.14 AS ...
我目前正在处理我的 docker-compose 文件以安装 laravel 8 和 php 8.
我测试了“php:7.4-fpm-alpine”,当我访问容器时,我得到了这个版本的 php :
/var/www/html # php --version
PHP 7.4.26 (cli) (built: Nov 30 2021 08:21:51) ( NTS )
你可以自己测试一下:
docker container ls
docker exec -it <container_id> sh
php --version
我在安装“php:8.0-fpm-alpine”时得到 PHP 8.0.13
另外,我正在使用 composer image 创建我的 laravel 项目,我没有在本地安装 php/composer。您可能会看一看,因为它可能很快就会造成混淆 ;-)
自从昨天最新的 php fpm docker 图像更新 (https://hub.docker.com/_/php?tab=tags&page=1&name=fpm-alpine) 以来,我的管道坏了,因为显然 PHP 安装了版本 8 而不是我的 7.4指定了 Dockerfile。
我在我的 docker 文件中使用它:
FROM php:7.4-fpm-alpine AS ...
但是根据我的作曲家安装容器有 PHP 8.0.13 运行:
Root composer.json requires php 7.4.26 but your php version (8.0.13) does not satisfy that requirement.
有人知道这是怎么回事吗?
我今天遇到了同样的问题...
尝试:
- composer install --no-scripts --ignore-platform-reqs
帮我修好了。
我可能遇到了同样的问题。那些 alpine PHP 图像不包括作曲家,那么你如何安装它?如果您使用的是 apk,看起来 latest alpine composer package 正在将 php8 作为依赖项拉入。为我解决这个问题的方法是使用 getcomposer.org 中的安装脚本而不是使用 apk 安装 composer。 假设这是你正在做的,从你的 Dockerfile 中删除它:
RUN apk add composer
并添加:
ADD https://getcomposer.org/installer ./composer-setup.php
RUN php ./composer-setup.php --install-dir=/usr/local/bin --filename=composer
RUN rm ./composer-setup.php
如果composer确实包含在你的基础镜像中,你可以先尝试卸载:
RUN apk delete composer
然后添加上面的代码以从安装脚本安装它。
编辑:添加 ignore-platform-reqs 标志可能会让你克服错误,但如果你有作曲家,你会在未来引入一个可能的失败点具有平台要求的包。在这种情况下,您直到运行时才会知道错误。我不推荐这种方法。我在上面发布的方法将使用系统上已有的 PHP 版本安装作曲家,并且不需要有风险的解决方法。
正如 Jeremy Brooks 已经提到的,Alpine 发布了 3.15 版,其中 composer 需要 PHP 8 (https://pkgs.alpinelinux.org/package/v3.15/community/x86_64/composer)。不是从 getcomposer.org 安装作曲家,另一种解决方案是使用 Alpine 3.14:
FROM php:7.4-fpm-alpine3.14 AS ...
我目前正在处理我的 docker-compose 文件以安装 laravel 8 和 php 8.
我测试了“php:7.4-fpm-alpine”,当我访问容器时,我得到了这个版本的 php :
/var/www/html # php --version
PHP 7.4.26 (cli) (built: Nov 30 2021 08:21:51) ( NTS )
你可以自己测试一下:
docker container ls
docker exec -it <container_id> sh
php --version
我在安装“php:8.0-fpm-alpine”时得到 PHP 8.0.13
另外,我正在使用 composer image 创建我的 laravel 项目,我没有在本地安装 php/composer。您可能会看一看,因为它可能很快就会造成混淆 ;-)