簡體   English   中英

PHP-FPM Alpine Docker Image 7.4 安裝 PHP 版本 8.0

[英]PHP-FPM Alpine Docker Image 7.4 installs PHP version 8.0

since the latest php fpm docker image update yesterday ( https://hub.docker.com/_/php?tab=tags&page=1&name=fpm-alpine ) my pipeline is broken because apparently PHP version 8 is installed instead of 7.4 as in我的 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.

有人知道這里發生了什么嗎?

正如 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 ...

我可能遇到了同樣的問題。 那些基本的 PHP 圖像不包括作曲家,那么你是如何安裝它的呢? 如果您使用的是 apk,我相信最新的高山作曲家 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 標志可能會讓您克服錯誤,但是如果您有一個具有平台要求的作曲家 package,那么您將來會引入一個可能的故障點。 在這種情況下,直到運行時您才會知道錯誤。

您正在從主機命令行(安裝 PHP 8 的位置)而不是在容器內運行 composer。

我目前正在處理我的 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。 您可能會看一下,因為它可能很快就會令人困惑;-)

我今天也遇到了同樣的問題...

嘗試:

  • 作曲家安裝 --no-scripts --ignore-platform-reqs

為我修好了。

代碼和想法來自https://stackoverflow.com/users/564000/armin

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM