recherche

Maison  >  Questions et réponses  >  le corps du texte

Comment revenir à PHP version 8.1 : Docker phpdockerio/php:8.1-fpm build utilise PHP version 8.2

J'exécute mon projet sur un conteneur Docker PHP-FPM (détails du fichier de configuration ci-dessous). Lorsque je crée le conteneur et que j'essaie d'exécuter Composer, j'obtiens une erreur signalant que l'extension PHP est manquante. Cependant, je pense que mes fichiers de build couvrent ces extensions (voir docker/php-fpm/Dockerfile ci-dessous).

Il s'avère que le conteneur a été construit avec php8.2 comme version par défaut. J'ai pu modifier le lien symbolique pour rétablir la version par défaut sur php8.1 mais cela ne semble pas être la bonne solution. Quelqu'un peut-il suggérer une meilleure solution ?

Comment savoir si le conteneur exécute la version 8.2 : À l'intérieur du conteneur, je cours php --version et j'obtiens :

root@fee8cc9ff790:/application# php --version
PHP 8.2.0 (cli) (built: Dec  8 2022 13:56:08) (NTS)

Puis which php m'a donné :

root@fee8cc9ff790:/application# which php
/usr/bin/php

J'ai suivi le lien symbolique vers le binaire PHP lié dans /etc/alternatives :

phar -> /usr/bin/phar8.2
phar.phar -> /usr/bin/phar.phar8.2
php -> /usr/bin/php8.2
phpdbg -> /usr/bin/phpdbg8.2

Cela ne me semble pas correct. J'ai pu les relier à leurs versions 8.1 et tout semble bien fonctionner maintenant, mais que se passe-t-il lorsque je reconstruis le conteneur ?

Détails de mon dossier :

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粉757640504P粉757640504374 Il y a quelques jours766

répondre à tous(1)je répondrai

  • P粉418854048

    P粉4188540482023-11-06 09:14:25

    Cela s'est avéré être dû à une extension que je chargeais. Dans docker/php-fpm/Dockerfile, j'ai installé php-xdebug, ce qui a provoqué le chargement de PHP8.2

    par le conteneur.

    Spécifier la version 8.1php8.1-xdebug a résolu le problème.

    Merci à Luispabon d'avoir répondu à ma question sur GitHub, il a pensé que cela devait être un problème avec les images. https://github.com/phpdocker-io/base-images/issues/ 62

    répondre
    0
  • Annulerrépondre