From fcf6d17851c5e6a07962a2b36655870b503c2234 Mon Sep 17 00:00:00 2001 From: andytson-inviqa Date: Sat, 4 Oct 2025 16:49:56 +0100 Subject: [PATCH 01/10] feat: add PHP 8.3/8.4 Debian 13 (trixie) --- docker-compose.yml | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/docker-compose.yml b/docker-compose.yml index 3bdd206..9a50b69 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -46,6 +46,16 @@ services: REDIS_VERSION: "7.2" BASEOS: bookworm + php83-fpm-trixie-base: + image: my127/php:8.3-fpm-trixie${TAG_SUFFIX:-} + build: + context: ./ + target: base + args: + VERSION: "8.3" + REDIS_VERSION: "7.4" + BASEOS: trixie + php84-fpm-bookworm-base: image: my127/php:8.4-fpm-bookworm${TAG_SUFFIX:-} build: @@ -56,6 +66,16 @@ services: REDIS_VERSION: "7.4" BASEOS: bookworm + php84-fpm-trixie-base: + image: my127/php:8.4-fpm-trixie${TAG_SUFFIX:-} + build: + context: ./ + target: base + args: + VERSION: "8.4" + REDIS_VERSION: "7.4" + BASEOS: trixie + # Console Images php81-fpm-bullseye-console: image: my127/php:8.1-fpm-bullseye-console${TAG_SUFFIX:-} @@ -112,6 +132,17 @@ services: REDIS_VERSION: "7.2" BASEOS: bookworm + php83-fpm-trixie-console: + image: my127/php:8.3-fpm-trixie-console${TAG_SUFFIX:-} + build: + context: ./ + target: console + args: + VERSION: "8.3" + COMPOSER_VERSION: "2.8.12" + REDIS_VERSION: "8.2" + BASEOS: trixie + php84-fpm-bookworm-console: image: my127/php:8.4-fpm-bookworm-console${TAG_SUFFIX:-} build: @@ -122,3 +153,14 @@ services: COMPOSER_VERSION: "2.8.12" REDIS_VERSION: "7.4" BASEOS: bookworm + + php84-fpm-trixie-console: + image: my127/php:8.4-fpm-trixie-console${TAG_SUFFIX:-} + build: + context: ./ + target: console + args: + VERSION: "8.4" + COMPOSER_VERSION: "2.8.12" + REDIS_VERSION: "8.2" + BASEOS: trixie From 100b8f612b20ca84f0247fe99cc673e89ccef135 Mon Sep 17 00:00:00 2001 From: andytson-inviqa Date: Sat, 4 Oct 2025 17:06:46 +0100 Subject: [PATCH 02/10] remove old PHP and distro extension overrides --- installer/base/extensions/gd.sh | 24 +++------- installer/base/extensions/protobuf.sh | 11 +---- installer/base/extensions/xdebug.sh | 10 +---- installer/bookworm/extensions/event.sh | 9 +--- installer/bullseye/extensions/event.sh | 9 +--- installer/buster/extensions/event.sh | 62 -------------------------- installer/buster/extensions/intl.sh | 34 -------------- 7 files changed, 10 insertions(+), 149 deletions(-) delete mode 100644 installer/buster/extensions/event.sh delete mode 100644 installer/buster/extensions/intl.sh diff --git a/installer/base/extensions/gd.sh b/installer/base/extensions/gd.sh index 2904702..32604ba 100644 --- a/installer/base/extensions/gd.sh +++ b/installer/base/extensions/gd.sh @@ -13,24 +13,12 @@ function compile_gd() { _gd_deps_build - case "$VERSION" in - "7.3") - docker-php-ext-configure gd \ - --with-gd \ - --with-freetype-dir=/usr/include/ \ - --with-png-dir=/usr/include/ \ - --with-jpeg-dir=/usr/include/ \ - --with-webp-dir=/usr/include/ \ - --with-xpm-dir=/usr/include/ - ;; - *) - docker-php-ext-configure gd \ - --enable-gd \ - --with-freetype \ - --with-jpeg \ - --with-webp \ - --with-xpm - esac + docker-php-ext-configure gd \ + --enable-gd \ + --with-freetype \ + --with-jpeg \ + --with-webp \ + --with-xpm docker-php-ext-install gd diff --git a/installer/base/extensions/protobuf.sh b/installer/base/extensions/protobuf.sh index 85527d3..50a5c84 100644 --- a/installer/base/extensions/protobuf.sh +++ b/installer/base/extensions/protobuf.sh @@ -11,14 +11,5 @@ function install_protobuf() function compile_protobuf() { - case "$VERSION" in - 7.*) - printf "\n" | pecl install protobuf-3.20.3 - ;; - 8.0) - printf "\n" | pecl install protobuf-3.25.3 - ;; - *) - printf "\n" | pecl install protobuf - esac + printf "\n" | pecl install protobuf } diff --git a/installer/base/extensions/xdebug.sh b/installer/base/extensions/xdebug.sh index 97727e8..b4efd78 100755 --- a/installer/base/extensions/xdebug.sh +++ b/installer/base/extensions/xdebug.sh @@ -13,13 +13,5 @@ function compile_xdebug() ( set -o errexit -o pipefail - case "$VERSION" in - 7.*) - XDEBUG_PACKAGE="xdebug-2.9.8" - printf "\n" | pecl install "$XDEBUG_PACKAGE" - ;; - *) - XDEBUG_PACKAGE="xdebug" - printf "\n" | pecl install "$XDEBUG_PACKAGE" - esac + printf "\n" | pecl install xdebug ) diff --git a/installer/bookworm/extensions/event.sh b/installer/bookworm/extensions/event.sh index 41f8bbe..e902407 100644 --- a/installer/bookworm/extensions/event.sh +++ b/installer/bookworm/extensions/event.sh @@ -15,14 +15,7 @@ function compile_event() { _event_deps_build - local PACKAGE_NAME="event" - case "$VERSION" in - "8.0") - PACKAGE_NAME="event-3.0.2" - ;; - esac - - if ! printf "\n" | pecl install "$PACKAGE_NAME"; then + if ! printf "\n" | pecl install event; then return 1 fi diff --git a/installer/bullseye/extensions/event.sh b/installer/bullseye/extensions/event.sh index 41f8bbe..e902407 100644 --- a/installer/bullseye/extensions/event.sh +++ b/installer/bullseye/extensions/event.sh @@ -15,14 +15,7 @@ function compile_event() { _event_deps_build - local PACKAGE_NAME="event" - case "$VERSION" in - "8.0") - PACKAGE_NAME="event-3.0.2" - ;; - esac - - if ! printf "\n" | pecl install "$PACKAGE_NAME"; then + if ! printf "\n" | pecl install event; then return 1 fi diff --git a/installer/buster/extensions/event.sh b/installer/buster/extensions/event.sh deleted file mode 100644 index 460b74c..0000000 --- a/installer/buster/extensions/event.sh +++ /dev/null @@ -1,62 +0,0 @@ -#!/bin/bash - -function install_event() -{ - if ! has_extension event; then - compile_event - fi - - _event_deps_runtime - - docker-php-ext-enable --ini-name zz-docker-php-ext-event.ini event -} - -function compile_event() -{ - _event_deps_build - - local PACKAGE_NAME="event" - case "$VERSION" in - "8.0") - PACKAGE_NAME="event-3.0.2" - ;; - esac - - if ! printf "\n" | pecl install "$PACKAGE_NAME"; then - return 1 - fi - - _event_clean -} - -function _event_deps_runtime() -{ - enable \ - sockets - - install \ - libevent-2.1-6 \ - libevent-extra-2.1-6 \ - libevent-openssl-2.1-6 -} - -function _event_deps_build() -{ - enable \ - sockets - - install \ - libevent-dev \ - libssl-dev -} - -function _event_clean() -{ - remove \ - libevent-dev \ - libssl-dev - - if [ -f "/usr/local/etc/php/conf.d/docker-php-ext-sockets.ini" ]; then - rm "/usr/local/etc/php/conf.d/docker-php-ext-sockets.ini" - fi -} diff --git a/installer/buster/extensions/intl.sh b/installer/buster/extensions/intl.sh deleted file mode 100644 index 5e686a1..0000000 --- a/installer/buster/extensions/intl.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/bash - -function install_intl() -{ - _intl_deps_runtime - if ! has_extension intl; then - compile_intl - fi - docker-php-ext-enable intl -} - -function compile_intl() -{ - _intl_deps_build - - docker-php-ext-install intl - - _intl_clean -} - -function _intl_deps_runtime() -{ - install libicu63 -} - -function _intl_deps_build() -{ - install icu-devtools libicu-dev -} - -function _intl_clean() -{ - remove icu-devtools libicu-dev -} From 17868d232c8e15ab6e7f5e43bbf7d14fec1fbd36 Mon Sep 17 00:00:00 2001 From: andytson-inviqa Date: Fri, 5 Jun 2026 17:22:21 +0100 Subject: [PATCH 03/10] update redis and composer --- docker-compose.yml | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 9a50b69..8bbdd77 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -53,7 +53,7 @@ services: target: base args: VERSION: "8.3" - REDIS_VERSION: "7.4" + REDIS_VERSION: "8.8" BASEOS: trixie php84-fpm-bookworm-base: @@ -73,7 +73,7 @@ services: target: base args: VERSION: "8.4" - REDIS_VERSION: "7.4" + REDIS_VERSION: "8.8" BASEOS: trixie # Console Images @@ -84,7 +84,7 @@ services: target: console args: VERSION: "8.1" - COMPOSER_VERSION: "2.8.12" + COMPOSER_VERSION: "2.10.1" NODE_VERSION: "10" BASEOS: bullseye @@ -95,7 +95,7 @@ services: target: console args: VERSION: "8.1" - COMPOSER_VERSION: "2.8.12" + COMPOSER_VERSION: "2.10.1" NODE_VERSION: "10" BASEOS: bookworm @@ -106,7 +106,7 @@ services: target: console args: VERSION: "8.2" - COMPOSER_VERSION: "2.8.12" + COMPOSER_VERSION: "2.10.1" NODE_VERSION: "10" BASEOS: bullseye @@ -117,7 +117,7 @@ services: target: console args: VERSION: "8.2" - COMPOSER_VERSION: "2.8.12" + COMPOSER_VERSION: "2.10.1" NODE_VERSION: "10" BASEOS: bookworm @@ -128,7 +128,7 @@ services: target: console args: VERSION: "8.3" - COMPOSER_VERSION: "2.8.12" + COMPOSER_VERSION: "2.10.1" REDIS_VERSION: "7.2" BASEOS: bookworm @@ -139,8 +139,8 @@ services: target: console args: VERSION: "8.3" - COMPOSER_VERSION: "2.8.12" - REDIS_VERSION: "8.2" + COMPOSER_VERSION: "2.10.1" + REDIS_VERSION: "8.8" BASEOS: trixie php84-fpm-bookworm-console: @@ -150,7 +150,7 @@ services: target: console args: VERSION: "8.4" - COMPOSER_VERSION: "2.8.12" + COMPOSER_VERSION: "2.10.1" REDIS_VERSION: "7.4" BASEOS: bookworm @@ -161,6 +161,6 @@ services: target: console args: VERSION: "8.4" - COMPOSER_VERSION: "2.8.12" - REDIS_VERSION: "8.2" + COMPOSER_VERSION: "2.10.1" + REDIS_VERSION: "8.8" BASEOS: trixie From 23ba09419d945911116fac403f224a99a2b97d96 Mon Sep 17 00:00:00 2001 From: andytson-inviqa Date: Fri, 5 Jun 2026 17:35:37 +0100 Subject: [PATCH 04/10] fix: add trixie extension differences MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit trixie forces 64‑bit time_t, but packages needed a rename to do so, hence t64 suffix --- installer/trixie/extensions/event.sh | 55 ++++++++++++++++++++++++ installer/trixie/extensions/intl.sh | 34 +++++++++++++++ installer/trixie/extensions/memcached.sh | 36 ++++++++++++++++ 3 files changed, 125 insertions(+) create mode 100644 installer/trixie/extensions/event.sh create mode 100644 installer/trixie/extensions/intl.sh create mode 100755 installer/trixie/extensions/memcached.sh diff --git a/installer/trixie/extensions/event.sh b/installer/trixie/extensions/event.sh new file mode 100644 index 0000000..0c73e5f --- /dev/null +++ b/installer/trixie/extensions/event.sh @@ -0,0 +1,55 @@ +#!/bin/bash + +function install_event() +{ + if ! has_extension event; then + compile_event + fi + + _event_deps_runtime + + docker-php-ext-enable --ini-name zz-docker-php-ext-event.ini event +} + +function compile_event() +{ + _event_deps_build + + if ! printf "\n" | pecl install event; then + return 1 + fi + + _event_clean +} + +function _event_deps_runtime() +{ + enable \ + sockets + + install \ + libevent-2.1-7t64 \ + libevent-extra-2.1-7t64 \ + libevent-openssl-2.1-7t64 +} + +function _event_deps_build() +{ + enable \ + sockets + + install \ + libevent-dev \ + libssl-dev +} + +function _event_clean() +{ + remove \ + libevent-dev \ + libssl-dev + + if [ -f "/usr/local/etc/php/conf.d/docker-php-ext-sockets.ini" ]; then + rm "/usr/local/etc/php/conf.d/docker-php-ext-sockets.ini" + fi +} diff --git a/installer/trixie/extensions/intl.sh b/installer/trixie/extensions/intl.sh new file mode 100644 index 0000000..3523d37 --- /dev/null +++ b/installer/trixie/extensions/intl.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +function install_intl() +{ + _intl_deps_runtime + if ! has_extension intl; then + compile_intl + fi + docker-php-ext-enable intl +} + +function compile_intl() +{ + _intl_deps_build + + docker-php-ext-install intl + + _intl_clean +} + +function _intl_deps_runtime() +{ + install libicu76 +} + +function _intl_deps_build() +{ + install icu-devtools libicu-dev +} + +function _intl_clean() +{ + remove icu-devtools libicu-dev +} diff --git a/installer/trixie/extensions/memcached.sh b/installer/trixie/extensions/memcached.sh new file mode 100755 index 0000000..e73b41a --- /dev/null +++ b/installer/trixie/extensions/memcached.sh @@ -0,0 +1,36 @@ +#!/bin/bash + +function install_memcached() +{ + _memcached_deps_runtime + + if ! has_extension memcached; then + compile_memcached + fi + + docker-php-ext-enable memcached +} + +function compile_memcached() +{ + _memcached_deps_build + + printf "\n" | pecl install memcached + + _memcached_clean +} + +function _memcached_deps_runtime() +{ + install libmemcached11t64 libmemcachedutil2t64 +} + +function _memcached_deps_build() +{ + install libmemcached-dev libssl-dev zlib1g-dev +} + +function _memcached_clean() +{ + remove libmemcached-dev libssl-dev zlib1g-dev +} From 5158c93b8e28964f407e9152103e8aa29ec7ec7f Mon Sep 17 00:00:00 2001 From: andytson-inviqa Date: Fri, 5 Jun 2026 18:34:56 +0100 Subject: [PATCH 05/10] remove unsupported php 8.1 and 8.2 --- Dockerfile | 1 - Jenkinsfile | 2 +- docker-compose.yml | 80 ---------------------------------------------- 3 files changed, 1 insertion(+), 82 deletions(-) diff --git a/Dockerfile b/Dockerfile index c7a5bc7..91eb0c8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -47,7 +47,6 @@ RUN cd /root/installer; ./enable.sh \ bcmath \ gd \ intl \ - "$(dpkg --compare-versions "$PHP_VERSION" ge 8.3 || echo mcrypt )" \ opcache \ pdo_mysql \ pdo_pgsql \ diff --git a/Jenkinsfile b/Jenkinsfile index bc09a05..5275280 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -14,7 +14,7 @@ pipeline { axes { axis { name 'BUILD' - values 'php81', 'php82', 'php83', 'php84' + values 'php83', 'php84' } axis { name 'PLATFORM' diff --git a/docker-compose.yml b/docker-compose.yml index 8bbdd77..b031ae7 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,41 +1,5 @@ services: # Base Images - php81-fpm-bullseye-base: - image: my127/php:8.1-fpm-bullseye${TAG_SUFFIX:-} - build: - context: ./ - target: base - args: - VERSION: "8.1" - BASEOS: bullseye - - php81-fpm-bookworm-base: - image: my127/php:8.1-fpm-bookworm${TAG_SUFFIX:-} - build: - context: ./ - target: base - args: - VERSION: "8.1" - BASEOS: bookworm - - php82-fpm-bullseye-base: - image: my127/php:8.2-fpm-bullseye${TAG_SUFFIX:-} - build: - context: ./ - target: base - args: - VERSION: "8.2" - BASEOS: bullseye - - php82-fpm-bookworm-base: - image: my127/php:8.2-fpm-bookworm${TAG_SUFFIX:-} - build: - context: ./ - target: base - args: - VERSION: "8.2" - BASEOS: bookworm - php83-fpm-bookworm-base: image: my127/php:8.3-fpm-bookworm${TAG_SUFFIX:-} build: @@ -77,50 +41,6 @@ services: BASEOS: trixie # Console Images - php81-fpm-bullseye-console: - image: my127/php:8.1-fpm-bullseye-console${TAG_SUFFIX:-} - build: - context: ./ - target: console - args: - VERSION: "8.1" - COMPOSER_VERSION: "2.10.1" - NODE_VERSION: "10" - BASEOS: bullseye - - php81-fpm-bookworm-console: - image: my127/php:8.1-fpm-bookworm-console${TAG_SUFFIX:-} - build: - context: ./ - target: console - args: - VERSION: "8.1" - COMPOSER_VERSION: "2.10.1" - NODE_VERSION: "10" - BASEOS: bookworm - - php82-fpm-bullseye-console: - image: my127/php:8.2-fpm-bullseye-console${TAG_SUFFIX:-} - build: - context: ./ - target: console - args: - VERSION: "8.2" - COMPOSER_VERSION: "2.10.1" - NODE_VERSION: "10" - BASEOS: bullseye - - php82-fpm-bookworm-console: - image: my127/php:8.2-fpm-bookworm-console${TAG_SUFFIX:-} - build: - context: ./ - target: console - args: - VERSION: "8.2" - COMPOSER_VERSION: "2.10.1" - NODE_VERSION: "10" - BASEOS: bookworm - php83-fpm-bookworm-console: image: my127/php:8.3-fpm-bookworm-console${TAG_SUFFIX:-} build: From 58fc5bed00ced9f8e7bacbd5a0295abe451cdea5 Mon Sep 17 00:00:00 2001 From: andytson-inviqa Date: Fri, 5 Jun 2026 18:45:08 +0100 Subject: [PATCH 06/10] Remove REDIS_VERSION from base images but also make the default fail if not supplied for console images --- Dockerfile | 9 +++++---- docker-compose.yml | 4 ---- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/Dockerfile b/Dockerfile index 91eb0c8..55a837c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,12 +1,13 @@ # syntax=docker/dockerfile:1.4 -ARG VERSION=7.3 -ARG BASEOS=bullseye -ARG REDIS_VERSION=6.2 +ARG VERSION +ARG BASEOS +# The redis version is only used in the console image but needs a default value to avoid failing base image +ARG REDIS_VERSION=invalid FROM php:${VERSION}-fpm-${BASEOS} as base # Base Packages # --- -ARG BASEOS=bullseye +ARG BASEOS ENV IMAGE_TYPE=base RUN < Date: Fri, 5 Jun 2026 19:18:35 +0100 Subject: [PATCH 07/10] fix: limit trust scope of tideways gpg verifying to only tideways repo global apt key storage is discouraged --- installer/base/extensions/tideways.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/installer/base/extensions/tideways.sh b/installer/base/extensions/tideways.sh index 0dbb02e..d953d29 100644 --- a/installer/base/extensions/tideways.sh +++ b/installer/base/extensions/tideways.sh @@ -31,7 +31,7 @@ function _tideways_deps_build() apt-transport-https \ gnupg2 - echo 'deb https://packages.tideways.com/apt-packages-main any-version main' > /etc/apt/sources.list.d/tideways.list - curl --fail --silent --show-error --location 'https://packages.tideways.com/key.gpg' | apt-key add - + curl --fail --silent --show-error --location --output /usr/share/keyrings/tideways.asc 'https://packages.tideways.com/key.gpg' + echo 'deb [signed-by=/usr/share/keyrings/tideways.asc] https://packages.tideways.com/apt-packages-main any-version main' > /etc/apt/sources.list.d/tideways.list apt-get update -qq } From 5568ed9bea204182fc8d68da9e2d839512ca0bbe Mon Sep 17 00:00:00 2001 From: andytson-inviqa Date: Fri, 5 Jun 2026 19:20:23 +0100 Subject: [PATCH 08/10] remove now unneeded or default packages --- installer/base/extensions/tideways.sh | 4 ---- 1 file changed, 4 deletions(-) diff --git a/installer/base/extensions/tideways.sh b/installer/base/extensions/tideways.sh index d953d29..a3a0c53 100644 --- a/installer/base/extensions/tideways.sh +++ b/installer/base/extensions/tideways.sh @@ -27,10 +27,6 @@ function _tideways_deps_runtime() function _tideways_deps_build() { - install \ - apt-transport-https \ - gnupg2 - curl --fail --silent --show-error --location --output /usr/share/keyrings/tideways.asc 'https://packages.tideways.com/key.gpg' echo 'deb [signed-by=/usr/share/keyrings/tideways.asc] https://packages.tideways.com/apt-packages-main any-version main' > /etc/apt/sources.list.d/tideways.list apt-get update -qq From 152bcdc3857b62f0078fda89e4aec7b02428e223 Mon Sep 17 00:00:00 2001 From: andytson-inviqa Date: Fri, 5 Jun 2026 21:22:15 +0100 Subject: [PATCH 09/10] fix: libzip5 for trixie --- installer/base/extensions/zip.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/installer/base/extensions/zip.sh b/installer/base/extensions/zip.sh index 626a463..05a0928 100755 --- a/installer/base/extensions/zip.sh +++ b/installer/base/extensions/zip.sh @@ -22,6 +22,10 @@ function compile_zip() function _zip_deps_runtime() { + if [ "${BASEOS}" = "trixie" ]; then + install libzip5 + return + fi install libzip4 } From f4f55a4d83c751cf27d337fedb6f6b96eb4ffb08 Mon Sep 17 00:00:00 2001 From: Marco MC Date: Fri, 5 Jun 2026 22:28:10 +0200 Subject: [PATCH 10/10] docs: update README with structured sections and additional packages for PHP images --- README.md | 112 +++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 86 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index 1ad5a10..c9c0025 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,30 @@ # PHP Images + +## Contents + +- [Base](#base) +- [Console](#console) +- [Supported Versions](#supported-versions) +- [Build and Test](#build-and-test) + ## Base + A starting point with some common extensions for running various frameworks and applications. + + + ### Packages -* php-bcmath -* php-gd -* php-intl -* php-mcrypt -* php-opcache -* php-pdo (mysql) -* php-soap -* php-xdebug -* php-xsl -* php-zip + +- php-bcmath +- php-gd +- php-intl +- php-mcrypt +- php-opcache +- php-pdo (mysql) +- php-soap +- php-xdebug +- php-xsl +- php-zip ## Console @@ -19,19 +32,66 @@ Used in development for building and interacting with the application with a fam ### Packages -* build-tools (autoconf, automake, g++, gcc, make, nasm) -* composer (1.10.27 or 2.7.2) -* curl -* gettext-base -* git -* iproute -* mysql (client) -* nano -* nvm -* node (lts/dubnium aka v10, or none for PHP 8.3+) -* npm -* patch -* rsync -* wget -* yarn (if node is installed) -* zip +- build-tools (autoconf, automake, g++, gcc, make, nasm) +- composer (1.10.27 or 2.7.2) +- curl +- gettext-base +- git +- iproute +- mysql (client) +- nano +- nvm +- node (lts/dubnium aka v10, or none for PHP 8.3+) +- npm +- patch +- redis-cli +- rsync +- wget +- yarn (if node is installed) +- zip + +## Supported Versions + +| PHP version | Bookworm | Trixie | +| --- | --- | --- | +| `8.3` | Base + Console | Base + Console | +| `8.4` | Base + Console | Base + Console | + +## Build and Test + +Build and test all Trixie images: + +```bash +BUILD=trixie ./build.sh +BUILD=trixie ./test.sh +docker image rm \ + my127/php:8.3-fpm-trixie \ + my127/php:8.3-fpm-trixie-console \ + my127/php:8.4-fpm-trixie \ + my127/php:8.4-fpm-trixie-console +``` + +Build and test all PHP 8.4 images: + +```bash +BUILD=php84 ./build.sh +BUILD=php84 ./test.sh +docker image rm \ + my127/php:8.4-fpm-bookworm \ + my127/php:8.4-fpm-bookworm-console \ + my127/php:8.4-fpm-trixie \ + my127/php:8.4-fpm-trixie-console +``` + +Build and test a single image: + +```bash +BUILD=php84-fpm-trixie-console ./build.sh +BUILD=php84-fpm-trixie-console ./test.sh +``` + +Remove locally built images when finished: + +```bash +docker image rm my127/php:8.4-fpm-trixie-console +```