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/*
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.1
php8.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