[英]Docker phpdockerio/php:8.1-fpm builds with PHP version 8.2: How can I revert to 8.1?
我在 PHP-FPM docker 容器上運行我的項目(配置文件的詳細信息如下)。 當我構建我的容器並嘗試運行 composer 時,我收到錯誤報告缺少 PHP 擴展。 但是,我認為我的構建文件涵蓋了這些擴展(請參閱下面docker/php-fpm/Dockerfile
)。
事實證明,容器正在以 php8.2 作為默認版本構建。 我已經能夠更改符號鏈接以將默認版本設置回 php8.1 但這似乎不是正確的解決方案。 誰能建議更好的解決方法?
我怎么知道容器正在運行 8.2:在容器內,我運行了php --version
並得到:
root@fee8cc9ff790:/application# php --version
PHP 8.2.0 (cli) (built: Dec 8 2022 13:56:08) (NTS)
然后which php
給了我:
root@fee8cc9ff790:/application# which php
/usr/bin/php
我按照符號鏈接發現/etc/alternatives
中鏈接的 PHP 二進制文件是:
phar -> /usr/bin/phar8.2
phar.phar -> /usr/bin/phar.phar8.2
php -> /usr/bin/php8.2
phpdbg -> /usr/bin/phpdbg8.2
這一點對我來說似乎不對。 我能夠將它們重新鏈接到他們的 8.1 版本,現在一切似乎運行良好,但是當我重建容器時會發生什么?
我的文件的詳細信息:
docker-compose.yml
###############################################################################
# Generated on docker.io #
###############################################################################
version: '3.9'
services:
mailhog:
image: 'mailhog/mailhog:latest'
redis:
image: 'redis:alpine'
mysql:
image: 'mysql:8.0.27'
working_dir: /application
platform: linux/amd64
environment:
- MYSQL_ROOT_PASSWORD=
- MYSQL_DATABASE=
- MYSQL_USER=
- MYSQL_PASSWORD=
webserver:
image: 'nginx:alpine'
working_dir: /application
volumes:
- '.:/application'
- './docker/nginx/nginx.conf:/etc/nginx/conf.d/default.conf'
php-fpm:
build: docker/php-fpm
working_dir: /application/
volumes:
- '.:/application'
- './docker/php-fpm/php-ini-overrides.ini:/etc/php/8.1/fpm/conf.d/99-overrides.ini'
- './docker/php-fpm/php-ini-overrides.ini:/etc/php/8.1/cli/conf.d/99-overrides.ini'
docker-compose.override.yml
###############################################################################
# Generated on phpdocker.io #
###############################################################################
version: '3.9'
services:
mailhog:
ports:
- '8026:8025'
mysql:
ports:
- '33061:3306'
webserver:
ports:
- '801:80'
docker/php-fpm/Dockerfile
FROM phpdockerio/php:8.1-fpm
WORKDIR "/application"
RUN apt-get update; \
apt-get -y --no-install-recommends install \
git \
php-xdebug \
php8.1-mysql \
php8.1-sqlite \
mysql-client \
php8.1-redis; \
apt-get clean; \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/*
原來這是由我正在加載的擴展引起的。 在docker/php-fpm/Dockerfile
,我安裝了php-xdebug
,它導致容器加載 PHP8.2
指定 8.1 版本php8.1-xdebug
解決了這個問題。
感謝 luispabon 對我在 GitHub 上提出的問題的回應,我認為這一定是圖像的問題。 https://github.com/phpdocker-io/base-images/issues/62
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.