Rumah  >  Soal Jawab  >  teks badan

Cara untuk kembali ke PHP versi 8.1: Docker phpdockerio/php:8.1-fpm build menggunakan PHP versi 8.2

Saya sedang menjalankan projek saya pada bekas docker PHP-FPM (butiran fail konfigurasi di bawah). Apabila saya membina bekas dan cuba menjalankan Komposer, saya mendapat ralat melaporkan bahawa sambungan PHP tiada. Walau bagaimanapun, saya rasa fail binaan saya meliputi sambungan ini (lihat docker/php-fpm/Dockerfile di bawah).

Ternyata bekas itu dibina dengan php8.2 sebagai versi lalai. Saya telah dapat menukar symlink untuk menetapkan versi lalai kembali kepada php8.1 tetapi ini nampaknya bukan penyelesaian yang betul. Bolehkah sesiapa mencadangkan penyelesaian yang lebih baik?

Bagaimana saya tahu bekas sedang berjalan 8.2: Di dalam bekas saya berlari php --version dan mendapat:

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

Kemudian which php memberi saya:

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

Saya mengikuti pautan sym ke binari PHP yang dipautkan dalam /etc/alternatives:

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

Ini nampaknya tidak sesuai untuk saya. Saya dapat memautkannya semula kepada versi 8.1 mereka dan semuanya nampaknya berjalan lancar sekarang, tetapi apakah yang berlaku apabila saya membina semula bekas itu?

Butiran fail saya:

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粉757640504372 hari yang lalu764

membalas semua(1)saya akan balas

  • P粉418854048

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

    Ini ternyata disebabkan oleh sambungan yang saya muatkan. Dalam docker/php-fpm/Dockerfile saya memasang php-xdebug yang menyebabkan bekas memuatkan PHP8.2

    Menentukan versi 8.1php8.1-xdebug menyelesaikan masalah.

    Terima kasih kepada luispabon kerana menjawab soalan saya di GitHub, dia fikir ia mesti menjadi isu dengan imej. https://github.com/phpdocker-io/base-images/issues/ 62

    balas
    0
  • Batalbalas