【问题标题】:PHP-FPM Alpine Docker Image 7.4 installs PHP version 8.0PHP-FPM Alpine Docker Image 7.4 安装 PHP 8.0 版本
【发布时间】:2022-01-07 21:20:35
【问题描述】:

自从昨天最新的 php fpm docker 映像更新 (https://hub.docker.com/_/php?tab=tags&page=1&name=fpm-alpine) 以来,我的管道已损坏,因为显然安装了 PHP 版本 8 而不是我指定的 Dockerfile 中的 7.4。

我在我的 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 的?你怎么称呼它?

标签: php docker dockerfile alpine docker-image


【解决方案1】:

正如 Jeremy Brooks 已经提到的,Alpine 发布了 3.15 版,其中 composer 需要 PHP 8 (https://pkgs.alpinelinux.org/package/v3.15/community/x86_64/composer)。而不是从 getcomposer.org 安装 composer,另一种解决方案是使用 Alpine 3.14:

FROM php:7.4-fpm-alpine3.14 AS ...

【讨论】:

  • 非常感谢您指出这一点!它现在适用于固定的 alpine 版本。
【解决方案2】:

我可能遇到了同样的问题。那些高山 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 版本安装 composer,不需要冒险的解决方法。

【讨论】:

    【解决方案3】:

    我目前正在处理我的 docker-compose 文件以使用 php 8 安装 laravel 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。您可能会看一下,因为它可能很快就会令人困惑;-)

    【讨论】:

      【解决方案4】:

      我今天也遇到了同样的问题...

      试试:

      • composer install --no-scripts --ignore-platform-reqs

      帮我修好了。

      代码和想法来自 https://stackoverflow.com/users/564000/armin

      【讨论】:

      • 这听起来不是一个好主意 - 如果您正在安装的软件包真的与 PHP 8 不兼容怎么办?
      • 我完全理解你的意思!我对 php 和管道真的很陌生 - 所以如果有更好的解决方案 - 我会加入,但要全面披露:我刚刚发现 here
      • 这毕竟和管道无关,但适用于 Composer 包的所有用法
      猜你喜欢
      • 1970-01-01
      • 2020-11-05
      • 1970-01-01
      • 1970-01-01
      • 2023-01-14
      • 2018-03-31
      • 2017-07-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多