自從昨天更新了最新的 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.
任何人都知道這里發生了什么?
uj5u.com熱心網友回復:
正如 Jeremy Brooks 已經提到的,Alpine 發布了 3.15 版,其中 composer 需要 PHP 8(https://pkgs.alpinelinux.org/package/v3.15/community/x86_64/composer)。另一個解決方案是使用 Alpine 3.14,而不是從 getcomposer.org 安裝 composer:
FROM php:7.4-fpm-alpine3.14 AS ...
uj5u.com熱心網友回復:
我可能遇到了同樣的問題。那些 alpine PHP 鏡像不包含 composer,那么你是如何安裝它的呢?如果您使用的是 apk,看起來最新的 alpine composer 包正在將 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標志可能會讓你克服錯誤,但如果你有一個具有平臺要求的 composer 包,你可能會在未來引入一個可能的故障點。在這種情況下,直到運行時您才會知道錯誤。我不會推薦這種方法。我上面發布的方法將使用系統上已有的 PHP 版本安裝 Composer,并且不需要冒險的解決方法。
uj5u.com熱心網友回復:
我目前正在處理我的 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。這是您可能會看的東西,因為它可能很快就會令人困惑;-)
uj5u.com熱心網友回復:
我今天遇到了同樣的問題...
嘗試:
- composer install --no-scripts --ignore-platform-reqs
為我修好了。
代碼和想法來自 https://stackoverflow.com/users/564000/armin
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/372010.html
