如何回滚到 PHP 版本 8.1:Docker phpdockerio/php:8.1-fpm 构建使用了 PHP 8.2 版本
P粉757640504
P粉757640504 2023-11-05 09:52:26
0
1
650

我正在 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 clea n; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/*


P粉757640504
P粉757640504

全部回复 (1)
P粉418854048

这原来是由我正在加载的扩展引起的。在 docker/php-fpm/Dockerfile 中,我安装了 php-xdebug ,这导致容器加载 PHP8.2

指定8.1版本php8.1-xdebug解决了问题。

感谢 luispabon 对我在 GitHub 上提出的问题的回应,他认为这一定是图像的问题。https://github.com/phpdocker-io/base-images/issues/ 62

    最新下载
    更多>
    网站特效
    网站源码
    网站素材
    前端模板
    关于我们 免责声明 Sitemap
    PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!