From fc2ab9fb3a462aa93ee19b1a10f5992863da9aa2 Mon Sep 17 00:00:00 2001 From: Aleksandr Myrnyi Date: Mon, 3 Aug 2026 10:41:04 +0200 Subject: [PATCH 1/4] [NewRelic] Application logs + PHP Update to the latest minors (#146) * [NewRelic] Application logs * Update NewRelic to the latest * NewRelic 12.9.0.38 --- README.md | 20 ++++++++++---------- alpine/3.21/8.2/Dockerfile | 2 +- alpine/3.21/8.3/Dockerfile | 2 +- alpine/3.21/8.4/Dockerfile | 2 +- alpine/3.22/8.2/Dockerfile | 2 +- alpine/3.22/8.3/Dockerfile | 2 +- alpine/3.22/8.4/Dockerfile | 4 ++-- alpine/3.23/8.2/Dockerfile | 4 ++-- alpine/3.23/8.3/Dockerfile | 4 ++-- alpine/3.23/8.4/Dockerfile | 4 ++-- context/php/disabled/newrelic.ini | 6 ++++++ debian/bullseye/8.1/Dockerfile | 2 +- debian/bullseye/8.2/Dockerfile | 2 +- debian/bullseye/8.3/Dockerfile | 2 +- debian/bullseye/8.4/Dockerfile | 2 +- 15 files changed, 33 insertions(+), 27 deletions(-) diff --git a/README.md b/README.md index c8182a9a..922d498c 100644 --- a/README.md +++ b/README.md @@ -29,14 +29,14 @@ Extends official PHP Docker images with extensions and tools to be able to run S | Tag | PHP version | Linux distribution | Details | Dockerfile | OTEL support | |:--------------------------------------------------------------------------------------------|:------------|:-------------------|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:-------------------------------------------------------------------------------------------|:------------:| -| [spryker/php:latest](https://hub.docker.com/r/spryker/php/tags?name=latest) | 8.2.31 | Alpine 3.23 | [![](https://images.microbadger.com/badges/image/spryker/php:latest.svg)](https://microbadger.com/images/spryker/php:latest "Get your own image badge on microbadger.com") | [:link:](https://github.com/spryker/docker-php/blob/master/alpine/3.23/8.2/Dockerfile) | ✖ | -| [spryker/php:8.4](https://hub.docker.com/r/spryker/php/tags?name=8.4) | 8.4.21 | Alpine 3.23 | [![](https://images.microbadger.com/badges/image/spryker/php:8.4.svg)](https://microbadger.com/images/spryker/php:8.4 "Get your own image badge on microbadger.com") | [:link:](https://github.com/spryker/docker-php/blob/master/alpine/3.23/8.4/Dockerfile) | ✔ | -| [spryker/php:8.3](https://hub.docker.com/r/spryker/php/tags?name=8.3) | 8.3.31 | Alpine 3.23 | [![](https://images.microbadger.com/badges/image/spryker/php:8.3.svg)](https://microbadger.com/images/spryker/php:8.3 "Get your own image badge on microbadger.com") | [:link:](https://github.com/spryker/docker-php/blob/master/alpine/3.23/8.3/Dockerfile) | ✔ | -| [spryker/php:8.2](https://hub.docker.com/r/spryker/php/tags?name=8.2) | 8.2.31 | Alpine 3.23 | [![](https://images.microbadger.com/badges/image/spryker/php:8.2.svg)](https://microbadger.com/images/spryker/php:8.2 "Get your own image badge on microbadger.com") | [:link:](https://github.com/spryker/docker-php/blob/master/alpine/3.23/8.2/Dockerfile) | ✖ | -| [spryker/php:8.4-alpine3.23](https://hub.docker.com/r/spryker/php/tags?name=8.4-alpine3.23) | 8.4.21 | Alpine 3.23 | [![](https://images.microbadger.com/badges/image/spryker/php:8.4-alpine3.23.svg)](https://microbadger.com/images/spryker/php:8.4-alpine3.23 "Get your own image badge on microbadger.com") | [:link:](https://github.com/spryker/docker-php/blob/master/alpine/3.23/8.4/Dockerfile) | ✔ | -| [spryker/php:8.3-alpine3.23](https://hub.docker.com/r/spryker/php/tags?name=8.3-alpine3.23) | 8.3.31 | Alpine 3.23 | [![](https://images.microbadger.com/badges/image/spryker/php:8.3-alpine3.23.svg)](https://microbadger.com/images/spryker/php:8.3-alpine3.23 "Get your own image badge on microbadger.com") | [:link:](https://github.com/spryker/docker-php/blob/master/alpine/3.23/8.3/Dockerfile) | ✔ | -| [spryker/php:8.2-alpine3.23](https://hub.docker.com/r/spryker/php/tags?name=8.2-alpine3.23) | 8.2.31 | Alpine 3.23 | [![](https://images.microbadger.com/badges/image/spryker/php:8.2-alpine3.23.svg)](https://microbadger.com/images/spryker/php:8.2-alpine3.23 "Get your own image badge on microbadger.com") | [:link:](https://github.com/spryker/docker-php/blob/master/alpine/3.23/8.2/Dockerfile) | ✖ | -| [spryker/php:8.4-alpine3.22](https://hub.docker.com/r/spryker/php/tags?name=8.4-alpine3.22) | 8.4.21 | Alpine 3.22 | [![](https://images.microbadger.com/badges/image/spryker/php:8.4-alpine3.22.svg)](https://microbadger.com/images/spryker/php:8.4-alpine3.22 "Get your own image badge on microbadger.com") | [:link:](https://github.com/spryker/docker-php/blob/master/alpine/3.22/8.4/Dockerfile) | ✔ | +| [spryker/php:latest](https://hub.docker.com/r/spryker/php/tags?name=latest) | 8.2.32 | Alpine 3.23 | [![](https://images.microbadger.com/badges/image/spryker/php:latest.svg)](https://microbadger.com/images/spryker/php:latest "Get your own image badge on microbadger.com") | [:link:](https://github.com/spryker/docker-php/blob/master/alpine/3.23/8.2/Dockerfile) | ✖ | +| [spryker/php:8.4](https://hub.docker.com/r/spryker/php/tags?name=8.4) | 8.4.23 | Alpine 3.23 | [![](https://images.microbadger.com/badges/image/spryker/php:8.4.svg)](https://microbadger.com/images/spryker/php:8.4 "Get your own image badge on microbadger.com") | [:link:](https://github.com/spryker/docker-php/blob/master/alpine/3.23/8.4/Dockerfile) | ✔ | +| [spryker/php:8.3](https://hub.docker.com/r/spryker/php/tags?name=8.3) | 8.3.32 | Alpine 3.23 | [![](https://images.microbadger.com/badges/image/spryker/php:8.3.svg)](https://microbadger.com/images/spryker/php:8.3 "Get your own image badge on microbadger.com") | [:link:](https://github.com/spryker/docker-php/blob/master/alpine/3.23/8.3/Dockerfile) | ✔ | +| [spryker/php:8.2](https://hub.docker.com/r/spryker/php/tags?name=8.2) | 8.2.32 | Alpine 3.23 | [![](https://images.microbadger.com/badges/image/spryker/php:8.2.svg)](https://microbadger.com/images/spryker/php:8.2 "Get your own image badge on microbadger.com") | [:link:](https://github.com/spryker/docker-php/blob/master/alpine/3.23/8.2/Dockerfile) | ✖ | +| [spryker/php:8.4-alpine3.23](https://hub.docker.com/r/spryker/php/tags?name=8.4-alpine3.23) | 8.4.23 | Alpine 3.23 | [![](https://images.microbadger.com/badges/image/spryker/php:8.4-alpine3.23.svg)](https://microbadger.com/images/spryker/php:8.4-alpine3.23 "Get your own image badge on microbadger.com") | [:link:](https://github.com/spryker/docker-php/blob/master/alpine/3.23/8.4/Dockerfile) | ✔ | +| [spryker/php:8.3-alpine3.23](https://hub.docker.com/r/spryker/php/tags?name=8.3-alpine3.23) | 8.3.32 | Alpine 3.23 | [![](https://images.microbadger.com/badges/image/spryker/php:8.3-alpine3.23.svg)](https://microbadger.com/images/spryker/php:8.3-alpine3.23 "Get your own image badge on microbadger.com") | [:link:](https://github.com/spryker/docker-php/blob/master/alpine/3.23/8.3/Dockerfile) | ✔ | +| [spryker/php:8.2-alpine3.23](https://hub.docker.com/r/spryker/php/tags?name=8.2-alpine3.23) | 8.2.32 | Alpine 3.23 | [![](https://images.microbadger.com/badges/image/spryker/php:8.2-alpine3.23.svg)](https://microbadger.com/images/spryker/php:8.2-alpine3.23 "Get your own image badge on microbadger.com") | [:link:](https://github.com/spryker/docker-php/blob/master/alpine/3.23/8.2/Dockerfile) | ✖ | +| [spryker/php:8.4-alpine3.22](https://hub.docker.com/r/spryker/php/tags?name=8.4-alpine3.22) | 8.4.22 | Alpine 3.22 | [![](https://images.microbadger.com/badges/image/spryker/php:8.4-alpine3.22.svg)](https://microbadger.com/images/spryker/php:8.4-alpine3.22 "Get your own image badge on microbadger.com") | [:link:](https://github.com/spryker/docker-php/blob/master/alpine/3.22/8.4/Dockerfile) | ✔ | | [spryker/php:8.3-alpine3.22](https://hub.docker.com/r/spryker/php/tags?name=8.3-alpine3.22) | 8.3.31 | Alpine 3.22 | [![](https://images.microbadger.com/badges/image/spryker/php:8.3-alpine3.22.svg)](https://microbadger.com/images/spryker/php:8.3-alpine3.22 "Get your own image badge on microbadger.com") | [:link:](https://github.com/spryker/docker-php/blob/master/alpine/3.22/8.3/Dockerfile) | ✔ | | [spryker/php:8.2-alpine3.22](https://hub.docker.com/r/spryker/php/tags?name=8.2-alpine3.22) | 8.2.31 | Alpine 3.22 | [![](https://images.microbadger.com/badges/image/spryker/php:8.2-alpine3.22.svg)](https://microbadger.com/images/spryker/php:8.2-alpine3.22 "Get your own image badge on microbadger.com") | [:link:](https://github.com/spryker/docker-php/blob/master/alpine/3.22/8.2/Dockerfile) | ✔ | | [spryker/php:8.4-alpine3.21](https://hub.docker.com/r/spryker/php/tags?name=8.4-alpine3.21) | 8.4.15 | Alpine 3.21 | [![](https://images.microbadger.com/badges/image/spryker/php:8.4-alpine3.21.svg)](https://microbadger.com/images/spryker/php:8.4-alpine3.21 "Get your own image badge on microbadger.com") | [:link:](https://github.com/spryker/docker-php/blob/master/alpine/3.21/8.4/Dockerfile) | ✔ | @@ -179,7 +179,7 @@ Disabled extensions [ ] blackfire 1.87.1~linux-musl-x64-non_zts82 [ ] excimer 1.2.5 [ ] imagick 3.8.1 - [ ] newrelic 12.8.0.37 + [ ] newrelic 12.9.0.38 [ ] otel [ ] pcov 1.0.12 [ ] tideways 5.32.0-d1af5cc @@ -200,7 +200,7 @@ xhprof 2.3.10 stable Composer ==================== Composer version 2.9.3 2025-12-30 13:40:17 -PHP version 8.2.31 (/usr/local/bin/php) +PHP version 8.2.32 (/usr/local/bin/php) ``` ##### Run the following to get the report ```bash diff --git a/alpine/3.21/8.2/Dockerfile b/alpine/3.21/8.2/Dockerfile index a85b6de1..216f10d2 100644 --- a/alpine/3.21/8.2/Dockerfile +++ b/alpine/3.21/8.2/Dockerfile @@ -6,7 +6,7 @@ ARG TARGETPLATFORM ARG COMPOSER_VERSION=2.9.8 ARG BLACKFIRE_VERSION=1.87.1 ARG BLACKFIRE_PHP_VERSION=82 -ARG NEWRELIC_VERSION=12.8.0.37 +ARG NEWRELIC_VERSION=12.9.0.38 ARG TIDEWAYS_VERSION=5.32.0 ARG TIDEWAYS_PHP_VERSION=8.2 diff --git a/alpine/3.21/8.3/Dockerfile b/alpine/3.21/8.3/Dockerfile index 811d6dd1..a0ba9810 100644 --- a/alpine/3.21/8.3/Dockerfile +++ b/alpine/3.21/8.3/Dockerfile @@ -6,7 +6,7 @@ ARG TARGETPLATFORM ARG COMPOSER_VERSION=2.9.8 ARG BLACKFIRE_VERSION=1.92.48 ARG BLACKFIRE_PHP_VERSION=83 -ARG NEWRELIC_VERSION=12.8.0.37 +ARG NEWRELIC_VERSION=12.9.0.38 ARG TIDEWAYS_VERSION=5.32.0 ARG TIDEWAYS_PHP_VERSION=8.3 diff --git a/alpine/3.21/8.4/Dockerfile b/alpine/3.21/8.4/Dockerfile index 6258aef9..3b12c29e 100644 --- a/alpine/3.21/8.4/Dockerfile +++ b/alpine/3.21/8.4/Dockerfile @@ -6,7 +6,7 @@ ARG TARGETPLATFORM ARG COMPOSER_VERSION=2.9.8 ARG BLACKFIRE_VERSION=1.92.48 ARG BLACKFIRE_PHP_VERSION=84 -ARG NEWRELIC_VERSION=12.8.0.37 +ARG NEWRELIC_VERSION=12.9.0.38 ARG TIDEWAYS_VERSION=5.32.0 ARG TIDEWAYS_PHP_VERSION=8.4 diff --git a/alpine/3.22/8.2/Dockerfile b/alpine/3.22/8.2/Dockerfile index 1fa123ff..949a00e8 100644 --- a/alpine/3.22/8.2/Dockerfile +++ b/alpine/3.22/8.2/Dockerfile @@ -6,7 +6,7 @@ ARG TARGETPLATFORM ARG COMPOSER_VERSION=2.9.8 ARG BLACKFIRE_VERSION=1.87.1 ARG BLACKFIRE_PHP_VERSION=82 -ARG NEWRELIC_VERSION=12.8.0.37 +ARG NEWRELIC_VERSION=12.9.0.38 ARG TIDEWAYS_VERSION=5.32.0 ARG TIDEWAYS_PHP_VERSION=8.2 diff --git a/alpine/3.22/8.3/Dockerfile b/alpine/3.22/8.3/Dockerfile index 312ebfdc..e55d5bbe 100644 --- a/alpine/3.22/8.3/Dockerfile +++ b/alpine/3.22/8.3/Dockerfile @@ -6,7 +6,7 @@ ARG TARGETPLATFORM ARG COMPOSER_VERSION=2.9.8 ARG BLACKFIRE_VERSION=1.92.48 ARG BLACKFIRE_PHP_VERSION=83 -ARG NEWRELIC_VERSION=12.8.0.37 +ARG NEWRELIC_VERSION=12.9.0.38 ARG TIDEWAYS_VERSION=5.32.0 ARG TIDEWAYS_PHP_VERSION=8.3 diff --git a/alpine/3.22/8.4/Dockerfile b/alpine/3.22/8.4/Dockerfile index 46b0966f..d605dc67 100644 --- a/alpine/3.22/8.4/Dockerfile +++ b/alpine/3.22/8.4/Dockerfile @@ -1,12 +1,12 @@ # syntax = docker/dockerfile:1.0.2-experimental -ARG SPRYKER_PHP_VERSION=8.4.21 +ARG SPRYKER_PHP_VERSION=8.4.22 FROM php:${SPRYKER_PHP_VERSION}-fpm-alpine3.22 ARG TARGETPLATFORM ARG COMPOSER_VERSION=2.9.8 ARG BLACKFIRE_VERSION=1.92.48 ARG BLACKFIRE_PHP_VERSION=84 -ARG NEWRELIC_VERSION=12.8.0.37 +ARG NEWRELIC_VERSION=12.9.0.38 ARG TIDEWAYS_VERSION=5.32.0 ARG TIDEWAYS_PHP_VERSION=8.4 diff --git a/alpine/3.23/8.2/Dockerfile b/alpine/3.23/8.2/Dockerfile index d8b09edc..d516f45e 100644 --- a/alpine/3.23/8.2/Dockerfile +++ b/alpine/3.23/8.2/Dockerfile @@ -1,12 +1,12 @@ # syntax = docker/dockerfile:1.0.2-experimental -ARG SPRYKER_PHP_VERSION=8.2.31 +ARG SPRYKER_PHP_VERSION=8.2.32 FROM php:${SPRYKER_PHP_VERSION}-fpm-alpine3.23 ARG TARGETPLATFORM ARG COMPOSER_VERSION=2.9.8 ARG BLACKFIRE_VERSION=1.87.1 ARG BLACKFIRE_PHP_VERSION=82 -ARG NEWRELIC_VERSION=12.8.0.37 +ARG NEWRELIC_VERSION=12.9.0.38 ARG TIDEWAYS_VERSION=5.32.0 ARG TIDEWAYS_PHP_VERSION=8.2 diff --git a/alpine/3.23/8.3/Dockerfile b/alpine/3.23/8.3/Dockerfile index 78af2ade..e0287f18 100644 --- a/alpine/3.23/8.3/Dockerfile +++ b/alpine/3.23/8.3/Dockerfile @@ -1,12 +1,12 @@ # syntax = docker/dockerfile:1.0.2-experimental -ARG SPRYKER_PHP_VERSION=8.3.31 +ARG SPRYKER_PHP_VERSION=8.3.32 FROM php:${SPRYKER_PHP_VERSION}-fpm-alpine3.23 ARG TARGETPLATFORM ARG COMPOSER_VERSION=2.9.8 ARG BLACKFIRE_VERSION=1.92.48 ARG BLACKFIRE_PHP_VERSION=83 -ARG NEWRELIC_VERSION=12.8.0.37 +ARG NEWRELIC_VERSION=12.9.0.38 ARG TIDEWAYS_VERSION=5.32.0 ARG TIDEWAYS_PHP_VERSION=8.3 diff --git a/alpine/3.23/8.4/Dockerfile b/alpine/3.23/8.4/Dockerfile index e6bdd6bb..28785461 100644 --- a/alpine/3.23/8.4/Dockerfile +++ b/alpine/3.23/8.4/Dockerfile @@ -1,12 +1,12 @@ # syntax = docker/dockerfile:1.0.2-experimental -ARG SPRYKER_PHP_VERSION=8.4.21 +ARG SPRYKER_PHP_VERSION=8.4.23 FROM php:${SPRYKER_PHP_VERSION}-fpm-alpine3.23 ARG TARGETPLATFORM ARG COMPOSER_VERSION=2.9.8 ARG BLACKFIRE_VERSION=1.92.48 ARG BLACKFIRE_PHP_VERSION=84 -ARG NEWRELIC_VERSION=12.8.0.37 +ARG NEWRELIC_VERSION=12.9.0.38 ARG TIDEWAYS_VERSION=5.32.0 ARG TIDEWAYS_PHP_VERSION=8.4 diff --git a/context/php/disabled/newrelic.ini b/context/php/disabled/newrelic.ini index 0a98bb20..e3ab0ec8 100644 --- a/context/php/disabled/newrelic.ini +++ b/context/php/disabled/newrelic.ini @@ -31,3 +31,9 @@ newrelic.browser_monitoring.debug = ${NEWRELIC_BROWSER_MONITORING_DEBUG} ;Errors inbox newrelic.error_collector.ignore_exceptions = ${NEWRELIC_ERROR_COLLECTOR_IGNORE_EXCEPTIONS} + +;Application logging (logs in context) +newrelic.application_logging.enabled = ${NEWRELIC_APPLICATION_LOGGING_ENABLED} +newrelic.application_logging.metrics.enabled = ${NEWRELIC_APPLICATION_LOGGING_METRICS_ENABLED} +newrelic.application_logging.forwarding.enabled = ${NEWRELIC_APPLICATION_LOGGING_FORWARDING_ENABLED} +newrelic.application_logging.forwarding.log_level = ${NEWRELIC_APPLICATION_LOGGING_FORWARDING_LOG_LEVEL} diff --git a/debian/bullseye/8.1/Dockerfile b/debian/bullseye/8.1/Dockerfile index 868d9deb..d0923e2c 100644 --- a/debian/bullseye/8.1/Dockerfile +++ b/debian/bullseye/8.1/Dockerfile @@ -8,7 +8,7 @@ ARG TARGETPLATFORM ARG COMPOSER_VERSION=2.9.8 ARG BLACKFIRE_VERSION=1.87.1 ARG BLACKFIRE_PHP_VERSION=81 -ARG NEWRELIC_VERSION=12.8.0.37 +ARG NEWRELIC_VERSION=12.9.0.38 ARG TIDEWAYS_VERSION=5.32.0 ARG TIDEWAYS_PHP_VERSION=8.1 ARG GOLANG_VERSION=1.20.3 diff --git a/debian/bullseye/8.2/Dockerfile b/debian/bullseye/8.2/Dockerfile index d0bac9d5..7664c022 100644 --- a/debian/bullseye/8.2/Dockerfile +++ b/debian/bullseye/8.2/Dockerfile @@ -8,7 +8,7 @@ ARG TARGETPLATFORM ARG COMPOSER_VERSION=2.9.8 ARG BLACKFIRE_VERSION=1.87.1 ARG BLACKFIRE_PHP_VERSION=82 -ARG NEWRELIC_VERSION=12.8.0.37 +ARG NEWRELIC_VERSION=12.9.0.38 ARG TIDEWAYS_VERSION=5.32.0 ARG TIDEWAYS_PHP_VERSION=8.2 ARG GOLANG_VERSION=1.20.3 diff --git a/debian/bullseye/8.3/Dockerfile b/debian/bullseye/8.3/Dockerfile index 169a952b..86cab366 100644 --- a/debian/bullseye/8.3/Dockerfile +++ b/debian/bullseye/8.3/Dockerfile @@ -8,7 +8,7 @@ ARG TARGETPLATFORM ARG COMPOSER_VERSION=2.9.8 ARG BLACKFIRE_VERSION=1.92.48 ARG BLACKFIRE_PHP_VERSION=83 -ARG NEWRELIC_VERSION=12.8.0.37 +ARG NEWRELIC_VERSION=12.9.0.38 ARG TIDEWAYS_VERSION=5.32.0 ARG TIDEWAYS_PHP_VERSION=8.3 ARG GOLANG_VERSION=1.20.3 diff --git a/debian/bullseye/8.4/Dockerfile b/debian/bullseye/8.4/Dockerfile index d5755aea..ef46e06e 100644 --- a/debian/bullseye/8.4/Dockerfile +++ b/debian/bullseye/8.4/Dockerfile @@ -8,7 +8,7 @@ ARG TARGETPLATFORM ARG COMPOSER_VERSION=2.9.8 ARG BLACKFIRE_VERSION=1.92.48 ARG BLACKFIRE_PHP_VERSION=84 -ARG NEWRELIC_VERSION=12.8.0.37 +ARG NEWRELIC_VERSION=12.9.0.38 ARG TIDEWAYS_VERSION=5.32.0 ARG TIDEWAYS_PHP_VERSION=8.4 ARG GOLANG_VERSION=1.20.3 From 3cbdd5943cda469bbe9b2eb4caff57bc54df8eb9 Mon Sep 17 00:00:00 2001 From: Aleksandr Myrnyi Date: Thu, 20 Aug 2026 09:25:10 +0200 Subject: [PATCH 2/4] PHP 8.5. Alpine 3.24 (#147) * Alpine 3.24 * [WIP] PHP 8.5 + Alpine 3.24 * [NewRelic] Application logs + PHP Update to the latest minors (#146) * [NewRelic] Application logs * Update NewRelic to the latest * NewRelic 12.9.0.38 * Update ReadME * CI for 8.5 --- .github/workflows/ci.yml | 20 ++ .../workflows/ecr-scheduled-security-scan.yml | 4 + .github/workflows/release-notes.yml | 4 + ...tryvi-trufflehog-default-security-scan.yml | 18 ++ README.md | 39 +-- alpine/3.21/8.2/Dockerfile | 4 +- alpine/3.21/8.3/Dockerfile | 4 +- alpine/3.21/8.4/Dockerfile | 4 +- alpine/3.22/8.2/Dockerfile | 4 +- alpine/3.22/8.3/Dockerfile | 4 +- alpine/3.22/8.4/Dockerfile | 4 +- alpine/3.23/8.2/Dockerfile | 6 +- alpine/3.23/8.3/Dockerfile | 6 +- alpine/3.23/8.4/Dockerfile | 6 +- alpine/3.24/8.2/Dockerfile | 216 ++++++++++++++++ alpine/3.24/8.3/Dockerfile | 230 ++++++++++++++++++ alpine/3.24/8.4/Dockerfile | 230 ++++++++++++++++++ alpine/3.24/8.5/Dockerfile | 230 ++++++++++++++++++ .../{bullseye/8.1 => bookworm/8.5}/Dockerfile | 54 ++-- debian/bullseye/8.2/Dockerfile | 4 +- debian/bullseye/8.3/Dockerfile | 4 +- debian/bullseye/8.4/Dockerfile | 4 +- 22 files changed, 1030 insertions(+), 69 deletions(-) create mode 100644 alpine/3.24/8.2/Dockerfile create mode 100644 alpine/3.24/8.3/Dockerfile create mode 100644 alpine/3.24/8.4/Dockerfile create mode 100644 alpine/3.24/8.5/Dockerfile rename debian/{bullseye/8.1 => bookworm/8.5}/Dockerfile (72%) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6a69f339..0b695a6d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -57,6 +57,20 @@ jobs: tags: [ "spryker/php:8.4", "spryker/php:8.4-alpine3.23" ] platforms: [ "linux/amd64", "linux/arm64" ] + ### Alpine 3.24 + - image: "alpine/3.24/8.2/Dockerfile" + tags: [ "spryker/php:8.2-alpine3.24" ] + platforms: [ "linux/amd64", "linux/arm64" ] + - image: "alpine/3.24/8.3/Dockerfile" + tags: [ "spryker/php:8.3-alpine3.24" ] + platforms: [ "linux/amd64", "linux/arm64" ] + - image: "alpine/3.24/8.4/Dockerfile" + tags: [ "spryker/php:8.4-alpine3.24" ] + platforms: [ "linux/amd64", "linux/arm64" ] + - image: "alpine/3.24/8.5/Dockerfile" + tags: [ "spryker/php:8.5", "spryker/php:8.5-alpine3.24" ] + platforms: [ "linux/amd64", "linux/arm64" ] + ## Debian ### Debian bullseye - image: "debian/bullseye/8.2/Dockerfile" @@ -69,6 +83,12 @@ jobs: tags: [ "spryker/php:8.4-debian" ] platforms: [ "linux/amd64", "linux/arm64" ] + ## Debian + ### Debian bookworm + - image: "debian/bookworm/8.5/Dockerfile" + tags: [ "spryker/php:8.5-debian" ] + platforms: [ "linux/amd64", "linux/arm64" ] + steps: - name: Check out repository uses: actions/checkout@v3 diff --git a/.github/workflows/ecr-scheduled-security-scan.yml b/.github/workflows/ecr-scheduled-security-scan.yml index eee458e4..7ad1e484 100644 --- a/.github/workflows/ecr-scheduled-security-scan.yml +++ b/.github/workflows/ecr-scheduled-security-scan.yml @@ -33,6 +33,10 @@ jobs: - image_tag: "8.2-alpine3.23" - image_tag: "8.3-alpine3.23" - image_tag: "8.4-alpine3.23" + - image_tag: "8.2-alpine3.24" + - image_tag: "8.3-alpine3.24" + - image_tag: "8.4-alpine3.24" + - image_tag: "8.5-alpine3.24" steps: - name: Login to DockerHub diff --git a/.github/workflows/release-notes.yml b/.github/workflows/release-notes.yml index 6dccb2e2..d1e77e4d 100644 --- a/.github/workflows/release-notes.yml +++ b/.github/workflows/release-notes.yml @@ -36,6 +36,10 @@ jobs: - "8.2-alpine3.23" - "8.3-alpine3.23" - "8.4-alpine3.23" + - "8.2-alpine3.24" + - "8.3-alpine3.24" + - "8.4-alpine3.24" + - "8.5-alpine3.24" steps: - name: Checkout repository diff --git a/.github/workflows/tryvi-trufflehog-default-security-scan.yml b/.github/workflows/tryvi-trufflehog-default-security-scan.yml index bc2986c7..65ab7bae 100644 --- a/.github/workflows/tryvi-trufflehog-default-security-scan.yml +++ b/.github/workflows/tryvi-trufflehog-default-security-scan.yml @@ -45,6 +45,24 @@ jobs: tags: "8.4-alpine3.23" platforms: "linux/amd64" + ### Alpine 3.24 + - context: "alpine/3.24/8.2" + dockerfile: "Dockerfile" + tags: "8.2-alpine3.24" + platforms: "linux/amd64" + - context: "alpine/3.24/8.3" + dockerfile: "Dockerfile" + tags: "8.3-alpine3.24" + platforms: "linux/amd64" + - context: "alpine/3.24/8.4" + dockerfile: "Dockerfile" + tags: "8.4-alpine3.24" + platforms: "linux/amd64" + - context: "alpine/3.24/8.5" + dockerfile: "Dockerfile" + tags: "8.5-alpine3.24" + platforms: "linux/amd64" + steps: - name: Checkout code uses: actions/checkout@v3 diff --git a/README.md b/README.md index 922d498c..26160a37 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,9 @@ Extends official PHP Docker images with extensions and tools to be able to run S * `Alpine 3.21` * `Alpine 3.22` * `Alpine 3.23` + * `Alpine 3.24` * `Debian "bullseye"` + * `Debian "bookworm"` * Users: `root`, `spryker` * Working directory: `/data` @@ -29,24 +31,28 @@ Extends official PHP Docker images with extensions and tools to be able to run S | Tag | PHP version | Linux distribution | Details | Dockerfile | OTEL support | |:--------------------------------------------------------------------------------------------|:------------|:-------------------|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:-------------------------------------------------------------------------------------------|:------------:| -| [spryker/php:latest](https://hub.docker.com/r/spryker/php/tags?name=latest) | 8.2.32 | Alpine 3.23 | [![](https://images.microbadger.com/badges/image/spryker/php:latest.svg)](https://microbadger.com/images/spryker/php:latest "Get your own image badge on microbadger.com") | [:link:](https://github.com/spryker/docker-php/blob/master/alpine/3.23/8.2/Dockerfile) | ✖ | -| [spryker/php:8.4](https://hub.docker.com/r/spryker/php/tags?name=8.4) | 8.4.23 | Alpine 3.23 | [![](https://images.microbadger.com/badges/image/spryker/php:8.4.svg)](https://microbadger.com/images/spryker/php:8.4 "Get your own image badge on microbadger.com") | [:link:](https://github.com/spryker/docker-php/blob/master/alpine/3.23/8.4/Dockerfile) | ✔ | -| [spryker/php:8.3](https://hub.docker.com/r/spryker/php/tags?name=8.3) | 8.3.32 | Alpine 3.23 | [![](https://images.microbadger.com/badges/image/spryker/php:8.3.svg)](https://microbadger.com/images/spryker/php:8.3 "Get your own image badge on microbadger.com") | [:link:](https://github.com/spryker/docker-php/blob/master/alpine/3.23/8.3/Dockerfile) | ✔ | -| [spryker/php:8.2](https://hub.docker.com/r/spryker/php/tags?name=8.2) | 8.2.32 | Alpine 3.23 | [![](https://images.microbadger.com/badges/image/spryker/php:8.2.svg)](https://microbadger.com/images/spryker/php:8.2 "Get your own image badge on microbadger.com") | [:link:](https://github.com/spryker/docker-php/blob/master/alpine/3.23/8.2/Dockerfile) | ✖ | -| [spryker/php:8.4-alpine3.23](https://hub.docker.com/r/spryker/php/tags?name=8.4-alpine3.23) | 8.4.23 | Alpine 3.23 | [![](https://images.microbadger.com/badges/image/spryker/php:8.4-alpine3.23.svg)](https://microbadger.com/images/spryker/php:8.4-alpine3.23 "Get your own image badge on microbadger.com") | [:link:](https://github.com/spryker/docker-php/blob/master/alpine/3.23/8.4/Dockerfile) | ✔ | -| [spryker/php:8.3-alpine3.23](https://hub.docker.com/r/spryker/php/tags?name=8.3-alpine3.23) | 8.3.32 | Alpine 3.23 | [![](https://images.microbadger.com/badges/image/spryker/php:8.3-alpine3.23.svg)](https://microbadger.com/images/spryker/php:8.3-alpine3.23 "Get your own image badge on microbadger.com") | [:link:](https://github.com/spryker/docker-php/blob/master/alpine/3.23/8.3/Dockerfile) | ✔ | -| [spryker/php:8.2-alpine3.23](https://hub.docker.com/r/spryker/php/tags?name=8.2-alpine3.23) | 8.2.32 | Alpine 3.23 | [![](https://images.microbadger.com/badges/image/spryker/php:8.2-alpine3.23.svg)](https://microbadger.com/images/spryker/php:8.2-alpine3.23 "Get your own image badge on microbadger.com") | [:link:](https://github.com/spryker/docker-php/blob/master/alpine/3.23/8.2/Dockerfile) | ✖ | +| [spryker/php:latest](https://hub.docker.com/r/spryker/php/tags?name=latest) | 8.2.33 | Alpine 3.23 | [![](https://images.microbadger.com/badges/image/spryker/php:latest.svg)](https://microbadger.com/images/spryker/php:latest "Get your own image badge on microbadger.com") | [:link:](https://github.com/spryker/docker-php/blob/master/alpine/3.23/8.2/Dockerfile) | ✖ | +| [spryker/php:8.5](https://hub.docker.com/r/spryker/php/tags?name=8.5) | 8.5.9 | Alpine 3.24 | [![](https://images.microbadger.com/badges/image/spryker/php:8.5.svg)](https://microbadger.com/images/spryker/php:8.5 "Get your own image badge on microbadger.com") | [:link:](https://github.com/spryker/docker-php/blob/master/alpine/3.24/8.5/Dockerfile) | ✔ | +| [spryker/php:8.4](https://hub.docker.com/r/spryker/php/tags?name=8.4) | 8.4.24 | Alpine 3.23 | [![](https://images.microbadger.com/badges/image/spryker/php:8.4.svg)](https://microbadger.com/images/spryker/php:8.4 "Get your own image badge on microbadger.com") | [:link:](https://github.com/spryker/docker-php/blob/master/alpine/3.23/8.4/Dockerfile) | ✔ | +| [spryker/php:8.3](https://hub.docker.com/r/spryker/php/tags?name=8.3) | 8.3.33 | Alpine 3.23 | [![](https://images.microbadger.com/badges/image/spryker/php:8.3.svg)](https://microbadger.com/images/spryker/php:8.3 "Get your own image badge on microbadger.com") | [:link:](https://github.com/spryker/docker-php/blob/master/alpine/3.23/8.3/Dockerfile) | ✔ | +| [spryker/php:8.2](https://hub.docker.com/r/spryker/php/tags?name=8.2) | 8.2.33 | Alpine 3.23 | [![](https://images.microbadger.com/badges/image/spryker/php:8.2.svg)](https://microbadger.com/images/spryker/php:8.2 "Get your own image badge on microbadger.com") | [:link:](https://github.com/spryker/docker-php/blob/master/alpine/3.23/8.2/Dockerfile) | ✖ | +| [spryker/php:8.5-alpine3.24](https://hub.docker.com/r/spryker/php/tags?name=8.5-alpine3.24) | 8.5.9 | Alpine 3.24 | [![](https://images.microbadger.com/badges/image/spryker/php:8.5-alpine3.24.svg)](https://microbadger.com/images/spryker/php:8.5-alpine3.24 "Get your own image badge on microbadger.com") | [:link:](https://github.com/spryker/docker-php/blob/master/alpine/3.24/8.5/Dockerfile) | ✔ | +| [spryker/php:8.4-alpine3.24](https://hub.docker.com/r/spryker/php/tags?name=8.4-alpine3.24) | 8.4.24 | Alpine 3.24 | [![](https://images.microbadger.com/badges/image/spryker/php:8.4-alpine3.24.svg)](https://microbadger.com/images/spryker/php:8.4-alpine3.24 "Get your own image badge on microbadger.com") | [:link:](https://github.com/spryker/docker-php/blob/master/alpine/3.24/8.4/Dockerfile) | ✔ | +| [spryker/php:8.3-alpine3.24](https://hub.docker.com/r/spryker/php/tags?name=8.3-alpine3.24) | 8.3.33 | Alpine 3.24 | [![](https://images.microbadger.com/badges/image/spryker/php:8.3-alpine3.24.svg)](https://microbadger.com/images/spryker/php:8.3-alpine3.24 "Get your own image badge on microbadger.com") | [:link:](https://github.com/spryker/docker-php/blob/master/alpine/3.24/8.3/Dockerfile) | ✔ | +| [spryker/php:8.2-alpine3.24](https://hub.docker.com/r/spryker/php/tags?name=8.2-alpine3.24) | 8.2.33 | Alpine 3.24 | [![](https://images.microbadger.com/badges/image/spryker/php:8.2-alpine3.24.svg)](https://microbadger.com/images/spryker/php:8.2-alpine3.24 "Get your own image badge on microbadger.com") | [:link:](https://github.com/spryker/docker-php/blob/master/alpine/3.24/8.2/Dockerfile) | ✖ | +| [spryker/php:8.4-alpine3.23](https://hub.docker.com/r/spryker/php/tags?name=8.4-alpine3.23) | 8.4.24 | Alpine 3.23 | [![](https://images.microbadger.com/badges/image/spryker/php:8.4-alpine3.23.svg)](https://microbadger.com/images/spryker/php:8.4-alpine3.23 "Get your own image badge on microbadger.com") | [:link:](https://github.com/spryker/docker-php/blob/master/alpine/3.23/8.4/Dockerfile) | ✔ | +| [spryker/php:8.3-alpine3.23](https://hub.docker.com/r/spryker/php/tags?name=8.3-alpine3.23) | 8.3.33 | Alpine 3.23 | [![](https://images.microbadger.com/badges/image/spryker/php:8.3-alpine3.23.svg)](https://microbadger.com/images/spryker/php:8.3-alpine3.23 "Get your own image badge on microbadger.com") | [:link:](https://github.com/spryker/docker-php/blob/master/alpine/3.23/8.3/Dockerfile) | ✔ | +| [spryker/php:8.2-alpine3.23](https://hub.docker.com/r/spryker/php/tags?name=8.2-alpine3.23) | 8.2.33 | Alpine 3.23 | [![](https://images.microbadger.com/badges/image/spryker/php:8.2-alpine3.23.svg)](https://microbadger.com/images/spryker/php:8.2-alpine3.23 "Get your own image badge on microbadger.com") | [:link:](https://github.com/spryker/docker-php/blob/master/alpine/3.23/8.2/Dockerfile) | ✖ | | [spryker/php:8.4-alpine3.22](https://hub.docker.com/r/spryker/php/tags?name=8.4-alpine3.22) | 8.4.22 | Alpine 3.22 | [![](https://images.microbadger.com/badges/image/spryker/php:8.4-alpine3.22.svg)](https://microbadger.com/images/spryker/php:8.4-alpine3.22 "Get your own image badge on microbadger.com") | [:link:](https://github.com/spryker/docker-php/blob/master/alpine/3.22/8.4/Dockerfile) | ✔ | | [spryker/php:8.3-alpine3.22](https://hub.docker.com/r/spryker/php/tags?name=8.3-alpine3.22) | 8.3.31 | Alpine 3.22 | [![](https://images.microbadger.com/badges/image/spryker/php:8.3-alpine3.22.svg)](https://microbadger.com/images/spryker/php:8.3-alpine3.22 "Get your own image badge on microbadger.com") | [:link:](https://github.com/spryker/docker-php/blob/master/alpine/3.22/8.3/Dockerfile) | ✔ | | [spryker/php:8.2-alpine3.22](https://hub.docker.com/r/spryker/php/tags?name=8.2-alpine3.22) | 8.2.31 | Alpine 3.22 | [![](https://images.microbadger.com/badges/image/spryker/php:8.2-alpine3.22.svg)](https://microbadger.com/images/spryker/php:8.2-alpine3.22 "Get your own image badge on microbadger.com") | [:link:](https://github.com/spryker/docker-php/blob/master/alpine/3.22/8.2/Dockerfile) | ✔ | | [spryker/php:8.4-alpine3.21](https://hub.docker.com/r/spryker/php/tags?name=8.4-alpine3.21) | 8.4.15 | Alpine 3.21 | [![](https://images.microbadger.com/badges/image/spryker/php:8.4-alpine3.21.svg)](https://microbadger.com/images/spryker/php:8.4-alpine3.21 "Get your own image badge on microbadger.com") | [:link:](https://github.com/spryker/docker-php/blob/master/alpine/3.21/8.4/Dockerfile) | ✔ | | [spryker/php:8.3-alpine3.21](https://hub.docker.com/r/spryker/php/tags?name=8.3-alpine3.21) | 8.3.28 | Alpine 3.21 | [![](https://images.microbadger.com/badges/image/spryker/php:8.3-alpine3.21.svg)](https://microbadger.com/images/spryker/php:8.3-alpine3.21 "Get your own image badge on microbadger.com") | [:link:](https://github.com/spryker/docker-php/blob/master/alpine/3.21/8.3/Dockerfile) | ✔ | | [spryker/php:8.2-alpine3.21](https://hub.docker.com/r/spryker/php/tags?name=8.2-alpine3.21) | 8.2.29 | Alpine 3.21 | [![](https://images.microbadger.com/badges/image/spryker/php:8.2-alpine3.21.svg)](https://microbadger.com/images/spryker/php:8.2-alpine3.21 "Get your own image badge on microbadger.com") | [:link:](https://github.com/spryker/docker-php/blob/master/alpine/3.21/8.2/Dockerfile) | ✔ | +| [spryker/php:8.5-debian](https://hub.docker.com/r/spryker/php/tags?name=8.5-debian) | 8.5.9 | Debian "bookworm" | [![](https://images.microbadger.com/badges/image/spryker/php:8.5-debian.svg)](https://microbadger.com/images/spryker/php:8.5-debian "Get your own image badge on microbadger.com") | [:link:](https://github.com/spryker/docker-php/blob/master/debian/bookworm/8.5/Dockerfile) | ✔ | | [spryker/php:8.4-debian](https://hub.docker.com/r/spryker/php/tags?name=8.4-debian) | 8.4.11 | Debian "bullseye" | [![](https://images.microbadger.com/badges/image/spryker/php:8.4-debian.svg)](https://microbadger.com/images/spryker/php:8.4-debian "Get your own image badge on microbadger.com") | [:link:](https://github.com/spryker/docker-php/blob/master/debian/bullseye/8.4/Dockerfile) | ✔ | | [spryker/php:8.3-debian](https://hub.docker.com/r/spryker/php/tags?name=8.3-debian) | 8.3.24 | Debian "bullseye" | [![](https://images.microbadger.com/badges/image/spryker/php:8.3-debian.svg)](https://microbadger.com/images/spryker/php:8.3-debian "Get your own image badge on microbadger.com") | [:link:](https://github.com/spryker/docker-php/blob/master/debian/bullseye/8.3/Dockerfile) | ✔ | | [spryker/php:8.2-debian](https://hub.docker.com/r/spryker/php/tags?name=8.2-debian) | 8.2.29 | Debian "bullseye" | [![](https://images.microbadger.com/badges/image/spryker/php:8.2-debian.svg)](https://microbadger.com/images/spryker/php:8.2-debian "Get your own image badge on microbadger.com") | [:link:](https://github.com/spryker/docker-php/blob/master/debian/bullseye/8.2/Dockerfile) | ✔ | -| [spryker/php:8.1-debian](https://hub.docker.com/r/spryker/php/tags?name=8.1-debian) | 8.1.33 | Debian "bullseye" | [![](https://images.microbadger.com/badges/image/spryker/php:8.1-debian.svg)](https://microbadger.com/images/spryker/php:8.1-debian "Get your own image badge on microbadger.com") | [:link:](https://github.com/spryker/docker-php/blob/master/debian/bullseye/8.1/Dockerfile) | ✔ | -| [spryker/php:8.0-debian](https://hub.docker.com/r/spryker/php/tags?name=8.0-debian) | 8.0.30 | Debian "bullseye" | [![](https://images.microbadger.com/badges/image/spryker/php:8.0-debian.svg)](https://microbadger.com/images/spryker/php:8.0-debian "Get your own image badge on microbadger.com") | [:link:](https://github.com/spryker/docker-php/blob/master/debian/bullseye/8.0/Dockerfile) | ✖ | ## How to use @@ -176,13 +182,13 @@ Installed extensions Disabled extensions ==================== [ ] amqp 2.2.0 - [ ] blackfire 1.87.1~linux-musl-x64-non_zts82 - [ ] excimer 1.2.5 + [ ] blackfire 1.92.48~linux-musl-x64-non_zts83 + [ ] excimer 1.2.6 [ ] imagick 3.8.1 [ ] newrelic 12.9.0.38 [ ] otel [ ] pcov 1.0.12 - [ ] tideways 5.32.0-d1af5cc + [ ] tideways 5.42.0-d1af5cc [ ] xhprof 2.3.10 INSTALLED PACKAGES, CHANNEL PECL.PHP.NET: @@ -190,21 +196,20 @@ INSTALLED PACKAGES, CHANNEL PECL.PHP.NET: PACKAGE VERSION STATE amqp 2.2.0 stable apcu 5.1.28 stable -excimer 1.2.5 stable +excimer 1.2.6 stable imagick 3.8.1 stable pcov 1.0.12 stable redis 6.3.0 stable -xdebug 3.5.1 stable +xdebug 3.5.3 stable xhprof 2.3.10 stable Composer ==================== -Composer version 2.9.3 2025-12-30 13:40:17 -PHP version 8.2.32 (/usr/local/bin/php) +Composer version 2.10.2 2026-07-01 11:24:45 ``` ##### Run the following to get the report ```bash -$ docker run -i --rm spryker/php:8.2-alpine3.23 bash -s<<'EOF' +$ docker run -i --rm spryker/php:8.3 bash -s<<'EOF' docker-php-source extract echo "Installed extensions" echo "====================" diff --git a/alpine/3.21/8.2/Dockerfile b/alpine/3.21/8.2/Dockerfile index 216f10d2..ae0c1ea3 100644 --- a/alpine/3.21/8.2/Dockerfile +++ b/alpine/3.21/8.2/Dockerfile @@ -3,11 +3,11 @@ ARG SPRYKER_PHP_VERSION=8.2.29 FROM php:${SPRYKER_PHP_VERSION}-fpm-alpine3.21 ARG TARGETPLATFORM -ARG COMPOSER_VERSION=2.9.8 +ARG COMPOSER_VERSION=2.10.2 ARG BLACKFIRE_VERSION=1.87.1 ARG BLACKFIRE_PHP_VERSION=82 ARG NEWRELIC_VERSION=12.9.0.38 -ARG TIDEWAYS_VERSION=5.32.0 +ARG TIDEWAYS_VERSION=5.42.0 ARG TIDEWAYS_PHP_VERSION=8.2 ENV srcRoot /data diff --git a/alpine/3.21/8.3/Dockerfile b/alpine/3.21/8.3/Dockerfile index a0ba9810..7e5dd150 100644 --- a/alpine/3.21/8.3/Dockerfile +++ b/alpine/3.21/8.3/Dockerfile @@ -3,11 +3,11 @@ ARG SPRYKER_PHP_VERSION=8.3.28 FROM php:${SPRYKER_PHP_VERSION}-fpm-alpine3.21 ARG TARGETPLATFORM -ARG COMPOSER_VERSION=2.9.8 +ARG COMPOSER_VERSION=2.10.2 ARG BLACKFIRE_VERSION=1.92.48 ARG BLACKFIRE_PHP_VERSION=83 ARG NEWRELIC_VERSION=12.9.0.38 -ARG TIDEWAYS_VERSION=5.32.0 +ARG TIDEWAYS_VERSION=5.42.0 ARG TIDEWAYS_PHP_VERSION=8.3 ENV srcRoot /data diff --git a/alpine/3.21/8.4/Dockerfile b/alpine/3.21/8.4/Dockerfile index 3b12c29e..f8abcb46 100644 --- a/alpine/3.21/8.4/Dockerfile +++ b/alpine/3.21/8.4/Dockerfile @@ -3,11 +3,11 @@ ARG SPRYKER_PHP_VERSION=8.4.15 FROM php:${SPRYKER_PHP_VERSION}-fpm-alpine3.21 ARG TARGETPLATFORM -ARG COMPOSER_VERSION=2.9.8 +ARG COMPOSER_VERSION=2.10.2 ARG BLACKFIRE_VERSION=1.92.48 ARG BLACKFIRE_PHP_VERSION=84 ARG NEWRELIC_VERSION=12.9.0.38 -ARG TIDEWAYS_VERSION=5.32.0 +ARG TIDEWAYS_VERSION=5.42.0 ARG TIDEWAYS_PHP_VERSION=8.4 ENV srcRoot /data diff --git a/alpine/3.22/8.2/Dockerfile b/alpine/3.22/8.2/Dockerfile index 949a00e8..d71a0392 100644 --- a/alpine/3.22/8.2/Dockerfile +++ b/alpine/3.22/8.2/Dockerfile @@ -3,11 +3,11 @@ ARG SPRYKER_PHP_VERSION=8.2.31 FROM php:${SPRYKER_PHP_VERSION}-fpm-alpine3.22 ARG TARGETPLATFORM -ARG COMPOSER_VERSION=2.9.8 +ARG COMPOSER_VERSION=2.10.2 ARG BLACKFIRE_VERSION=1.87.1 ARG BLACKFIRE_PHP_VERSION=82 ARG NEWRELIC_VERSION=12.9.0.38 -ARG TIDEWAYS_VERSION=5.32.0 +ARG TIDEWAYS_VERSION=5.42.0 ARG TIDEWAYS_PHP_VERSION=8.2 ENV srcRoot /data diff --git a/alpine/3.22/8.3/Dockerfile b/alpine/3.22/8.3/Dockerfile index e55d5bbe..bf9a4a6a 100644 --- a/alpine/3.22/8.3/Dockerfile +++ b/alpine/3.22/8.3/Dockerfile @@ -3,11 +3,11 @@ ARG SPRYKER_PHP_VERSION=8.3.31 FROM php:${SPRYKER_PHP_VERSION}-fpm-alpine3.22 ARG TARGETPLATFORM -ARG COMPOSER_VERSION=2.9.8 +ARG COMPOSER_VERSION=2.10.2 ARG BLACKFIRE_VERSION=1.92.48 ARG BLACKFIRE_PHP_VERSION=83 ARG NEWRELIC_VERSION=12.9.0.38 -ARG TIDEWAYS_VERSION=5.32.0 +ARG TIDEWAYS_VERSION=5.42.0 ARG TIDEWAYS_PHP_VERSION=8.3 ENV srcRoot /data diff --git a/alpine/3.22/8.4/Dockerfile b/alpine/3.22/8.4/Dockerfile index d605dc67..fd72b8a1 100644 --- a/alpine/3.22/8.4/Dockerfile +++ b/alpine/3.22/8.4/Dockerfile @@ -3,11 +3,11 @@ ARG SPRYKER_PHP_VERSION=8.4.22 FROM php:${SPRYKER_PHP_VERSION}-fpm-alpine3.22 ARG TARGETPLATFORM -ARG COMPOSER_VERSION=2.9.8 +ARG COMPOSER_VERSION=2.10.2 ARG BLACKFIRE_VERSION=1.92.48 ARG BLACKFIRE_PHP_VERSION=84 ARG NEWRELIC_VERSION=12.9.0.38 -ARG TIDEWAYS_VERSION=5.32.0 +ARG TIDEWAYS_VERSION=5.42.0 ARG TIDEWAYS_PHP_VERSION=8.4 ENV srcRoot /data diff --git a/alpine/3.23/8.2/Dockerfile b/alpine/3.23/8.2/Dockerfile index d516f45e..8428b173 100644 --- a/alpine/3.23/8.2/Dockerfile +++ b/alpine/3.23/8.2/Dockerfile @@ -1,13 +1,13 @@ # syntax = docker/dockerfile:1.0.2-experimental -ARG SPRYKER_PHP_VERSION=8.2.32 +ARG SPRYKER_PHP_VERSION=8.2.33 FROM php:${SPRYKER_PHP_VERSION}-fpm-alpine3.23 ARG TARGETPLATFORM -ARG COMPOSER_VERSION=2.9.8 +ARG COMPOSER_VERSION=2.10.2 ARG BLACKFIRE_VERSION=1.87.1 ARG BLACKFIRE_PHP_VERSION=82 ARG NEWRELIC_VERSION=12.9.0.38 -ARG TIDEWAYS_VERSION=5.32.0 +ARG TIDEWAYS_VERSION=5.42.0 ARG TIDEWAYS_PHP_VERSION=8.2 ENV srcRoot /data diff --git a/alpine/3.23/8.3/Dockerfile b/alpine/3.23/8.3/Dockerfile index e0287f18..d46ffc35 100644 --- a/alpine/3.23/8.3/Dockerfile +++ b/alpine/3.23/8.3/Dockerfile @@ -1,13 +1,13 @@ # syntax = docker/dockerfile:1.0.2-experimental -ARG SPRYKER_PHP_VERSION=8.3.32 +ARG SPRYKER_PHP_VERSION=8.3.33 FROM php:${SPRYKER_PHP_VERSION}-fpm-alpine3.23 ARG TARGETPLATFORM -ARG COMPOSER_VERSION=2.9.8 +ARG COMPOSER_VERSION=2.10.2 ARG BLACKFIRE_VERSION=1.92.48 ARG BLACKFIRE_PHP_VERSION=83 ARG NEWRELIC_VERSION=12.9.0.38 -ARG TIDEWAYS_VERSION=5.32.0 +ARG TIDEWAYS_VERSION=5.42.0 ARG TIDEWAYS_PHP_VERSION=8.3 ENV srcRoot /data diff --git a/alpine/3.23/8.4/Dockerfile b/alpine/3.23/8.4/Dockerfile index 28785461..a618876c 100644 --- a/alpine/3.23/8.4/Dockerfile +++ b/alpine/3.23/8.4/Dockerfile @@ -1,13 +1,13 @@ # syntax = docker/dockerfile:1.0.2-experimental -ARG SPRYKER_PHP_VERSION=8.4.23 +ARG SPRYKER_PHP_VERSION=8.4.24 FROM php:${SPRYKER_PHP_VERSION}-fpm-alpine3.23 ARG TARGETPLATFORM -ARG COMPOSER_VERSION=2.9.8 +ARG COMPOSER_VERSION=2.10.2 ARG BLACKFIRE_VERSION=1.92.48 ARG BLACKFIRE_PHP_VERSION=84 ARG NEWRELIC_VERSION=12.9.0.38 -ARG TIDEWAYS_VERSION=5.32.0 +ARG TIDEWAYS_VERSION=5.42.0 ARG TIDEWAYS_PHP_VERSION=8.4 ENV srcRoot /data diff --git a/alpine/3.24/8.2/Dockerfile b/alpine/3.24/8.2/Dockerfile new file mode 100644 index 00000000..ade72cf6 --- /dev/null +++ b/alpine/3.24/8.2/Dockerfile @@ -0,0 +1,216 @@ +# syntax = docker/dockerfile:1.0.2-experimental +ARG SPRYKER_PHP_VERSION=8.2.33 +FROM php:${SPRYKER_PHP_VERSION}-fpm-alpine3.24 + +ARG TARGETPLATFORM +ARG COMPOSER_VERSION=2.10.2 +ARG BLACKFIRE_VERSION=1.87.1 +ARG BLACKFIRE_PHP_VERSION=82 +ARG NEWRELIC_VERSION=12.9.0.38 +ARG TIDEWAYS_VERSION=5.42.0 +ARG TIDEWAYS_PHP_VERSION=8.2 + +ENV srcRoot /data +RUN mkdir -p ${srcRoot} + +ARG PHP_RUN_DEPS="\ + freetype \ + gmp \ + gnu-libiconv \ + icu-libs \ + libbz2 \ + libc6-compat \ + libjpeg-turbo \ + libpng \ + libwebp \ + libxml2 \ + libxpm \ + libxslt \ + libzip \ + rabbitmq-c \ + imagemagick" + +ARG PHP_BUILD_DEPS="\ + autoconf \ + bzip2-dev \ + freetype-dev \ + gmp-dev \ + icu-dev \ + icu-data-full \ + libjpeg-turbo-dev \ + libpng-dev \ + libwebp-dev \ + libxml2-dev \ + libxpm-dev \ + libzip-dev \ + postgresql-dev \ + rabbitmq-c-dev \ + g++ \ + imagemagick-dev" + +ARG PHP_EXTENSIONS="\ + bcmath \ + bz2 \ + ftp \ + gd \ + gmp \ + intl \ + mysqli \ + opcache \ + pcntl \ + pdo_mysql \ + pdo_pgsql \ + pgsql \ + soap \ + sockets \ + zip" + +ARG PHP_PECL_EXTENSIONS="\ + apcu \ + redis" + +ARG ADDITIONAL_PHP_PECL_EXTENSIONS="\ + pcov \ + xdebug \ + xhprof \ + excimer \ + amqp \ + imagick" + +ARG GRAPHVIZ_BUILD_DEPS="\ + expat-dev" + +ARG CFLAGS="-I/usr/src/php" +RUN apk update \ + && apk upgrade \ + && apk add --no-cache \ + bash \ + coreutils \ + curl \ + g++ \ + git \ + make \ + mysql-client \ + netcat-openbsd \ + openssh \ + postgresql-client \ + procps \ + python3 \ + shadow \ + unzip \ + linux-headers \ + libstdc++ \ + openssl-dev \ + zlib-dev \ + scdoc \ + ${PHP_RUN_DEPS} \ + && apk add --no-cache --virtual .php-build-deps ${PHP_BUILD_DEPS} \ + && apk add --no-cache --virtual .graphviz-build-deps ${GRAPHVIZ_BUILD_DEPS} \ + && rm -rf /var/lib/apt/lists/ \ + && cd /tmp \ + && git clone --depth 1 --branch v3.0.0_rc7 https://github.com/alpinelinux/apk-tools.git apk-tools-v3.0.0_rc7 \ + && cd apk-tools-v3.0.0_rc7 && make LUA=no && make LUA=no install \ + && cd /tmp \ + && curl -LO https://github.com/unicode-org/icu/releases/download/release-74-1/icu4c-74_1-src.tgz \ + && tar xzf icu4c-74_1-src.tgz \ + && cd icu/source && ./configure --prefix=/usr && make && make install \ + && cd /tmp \ + && rm -rf /tmp/apk-tools-v3.0.0_rc7 /tmp/icu4c-74_1-src.tgz /tmp/icu \ + && docker-php-ext-configure gd \ + --disable-gd-jis-conv \ + --with-freetype=/usr \ + --with-jpeg=/usr \ + --with-webp=/usr \ + --with-xpm=/usr \ + && docker-php-ext-install -j5 ${PHP_EXTENSIONS} \ + && pecl install -o -f ${PHP_PECL_EXTENSIONS} ${ADDITIONAL_PHP_PECL_EXTENSIONS} \ + && rm -rf /tmp/pear \ + && docker-php-ext-enable ${PHP_EXTENSIONS} ${PHP_PECL_EXTENSIONS} \ + && apk del --no-cache .php-build-deps + +# Related to https://github.com/docker-library/php/issues/240 +ENV LD_PRELOAD /usr/lib/preloadable_libiconv.so + +# Blackfire +ENV BLACKFIRE_AGENT_SOCKET='' +RUN architecture=$(case ${TARGETPLATFORM} in "linux/amd64") echo "amd64" ;; linux/arm64) echo "arm64" ;; *) echo "amd64" ;; esac) \ + && curl -A "Docker" -o /tmp/blackfire.so -D - -L -s https://packages.blackfire.io/binaries/blackfire-php/${BLACKFIRE_VERSION}/blackfire-php-alpine_${architecture}-php-${BLACKFIRE_PHP_VERSION}.so \ + && mv /tmp/blackfire.so $(php -r "echo ini_get ('extension_dir');")/blackfire.so + +# New Relic +ENV NEWRELIC_ENABLED=0 +ENV NEWRELIC_LICENSE='' +ENV NEWRELIC_APPNAME='Spryker' +ENV NEWRELIC_DISTRIBUTED_TRACING_ENABLED=0 +ENV NEWRELIC_TRANSACTION_TRACER_ENABLED=0 +ENV NEWRELIC_SPAN_EVENTS_ENABLED=0 +ENV NEWRELIC_TRANSACTION_TRACER_THRESHOLD=0 +ENV NEWRELIC_DISTRIBUTED_TRACING_EXCLUDE_NEWRELIC_HEADER=0 + +RUN bash -c 'curl -L "https://download.newrelic.com/php_agent/archive/${NEWRELIC_VERSION}/newrelic-php5-${NEWRELIC_VERSION}-linux-musl.tar.gz" | tar -C /tmp -zx \ + && export NR_INSTALL_USE_CP_NOT_LN=1 \ + && export NR_INSTALL_SILENT=1 \ + && /tmp/newrelic-php5-*/newrelic-install install \ + && rm -rf /tmp/newrelic-php5-* /tmp/nrinstall* \ + && /usr/bin/install -d -m 777 /var/log/newrelic/ \ + && rm /usr/local/etc/php/conf.d/newrelic.ini' + +# Tideways +ENV TIDEWAYS_APIKEY='' +ENV TIDEWAYS_DAEMON_URI='' +ENV TIDEWAYS_CLI_ENABLED=0 +RUN bash -c 'if [ "${TARGETPLATFORM}" == "linux/amd64" ]; then \ + wget "https://s3-eu-west-1.amazonaws.com/tideways/extension/${TIDEWAYS_VERSION}/tideways-php-${TIDEWAYS_VERSION}-alpine-x86_64.tar.gz" \ + && tar xvzf tideways-php-${TIDEWAYS_VERSION}-alpine-x86_64.tar.gz \ + && cp ./tideways-php-${TIDEWAYS_VERSION}/tideways-php-alpine-${TIDEWAYS_PHP_VERSION}.so $(php-config --extension-dir)/tideways.so; fi' + +RUN bash -c 'if [ "${TARGETPLATFORM}" == "linux/arm64" ]; then \ + wget "https://s3-eu-west-1.amazonaws.com/tideways/extension/${TIDEWAYS_VERSION}/tideways-php-${TIDEWAYS_VERSION}-alpine-arm64.tar.gz" \ + && tar xvzf tideways-php-${TIDEWAYS_VERSION}-alpine-arm64.tar.gz \ + && cp ./tideways-php-${TIDEWAYS_VERSION}/tideways-php-alpine-${TIDEWAYS_PHP_VERSION}.so $(php-config --extension-dir)/tideways.so; fi' + +#GraphViz 7.0.5 +RUN cd /tmp && \ + curl -L https://gitlab.com/api/v4/projects/4207231/packages/generic/graphviz-releases/7.0.5/graphviz-7.0.5.tar.gz | tar -zx && \ + cd /tmp/graphviz-7.0.5 && \ + ./configure && \ + make && \ + make install && \ + rm -rf /tmp/graphviz-7.0.5 && \ + apk del --no-cache .graphviz-build-deps + +# Opcache +RUN /usr/bin/install -d -m 777 /var/run/opcache + +# Remove default FPM pool +RUN rm /usr/local/etc/php-fpm.d/www.conf && \ + rm /usr/local/etc/php-fpm.d/docker.conf && \ + rm /usr/local/etc/php-fpm.d/zz-docker.conf + +# Add FPM configs +COPY context/php/php-fpm.d/worker.conf /usr/local/etc/php-fpm.d/worker.conf +COPY context/php/php-fpm.conf /usr/local/etc/php-fpm.conf + +# Copy php.ini configuration +COPY context/php/php.ini /usr/local/etc/php/ +COPY context/php/conf.d/90-opcache.ini /usr/local/etc/php/conf.d/ +COPY context/php/conf.d/92-session.ini /usr/local/etc/php/conf.d/ +COPY context/php/disabled /usr/local/etc/php/disabled + +WORKDIR /data + +# Install composer +RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer --version=${COMPOSER_VERSION} + +# Create application user 'spryker' +RUN addgroup spryker && \ + adduser -h /home/spryker -s /bin/sh -G www-data -D spryker && \ + chown spryker:spryker ${srcRoot} + +USER spryker +ENV COMPOSER_MEMORY_LIMIT=-1 +RUN mkdir -p /home/spryker/.composer +RUN bash -c '[[ $COMPOSER_VERSION == "1"* ]] && composer global require hirak/prestissimo && rm -rf /home/spryker/.composer/cache || true' + +USER root + diff --git a/alpine/3.24/8.3/Dockerfile b/alpine/3.24/8.3/Dockerfile new file mode 100644 index 00000000..53ec4c06 --- /dev/null +++ b/alpine/3.24/8.3/Dockerfile @@ -0,0 +1,230 @@ +# syntax = docker/dockerfile:1.0.2-experimental +ARG SPRYKER_PHP_VERSION=8.3.33 +FROM php:${SPRYKER_PHP_VERSION}-fpm-alpine3.24 + +ARG TARGETPLATFORM +ARG COMPOSER_VERSION=2.10.2 +ARG BLACKFIRE_VERSION=1.92.48 +ARG BLACKFIRE_PHP_VERSION=83 +ARG NEWRELIC_VERSION=12.9.0.38 +ARG TIDEWAYS_VERSION=5.42.0 +ARG TIDEWAYS_PHP_VERSION=8.3 + +ENV srcRoot /data +RUN mkdir -p ${srcRoot} + +ARG PHP_RUN_DEPS="\ + freetype \ + gmp \ + gnu-libiconv \ + icu-libs \ + libbz2 \ + libc6-compat \ + libjpeg-turbo \ + libpng \ + libwebp \ + libxml2 \ + libxpm \ + libxslt \ + libzip \ + rabbitmq-c \ + imagemagick" + +ARG PHP_BUILD_DEPS="\ + autoconf \ + bzip2-dev \ + freetype-dev \ + gmp-dev \ + icu-dev \ + icu-data-full \ + libjpeg-turbo-dev \ + libpng-dev \ + libwebp-dev \ + libxml2-dev \ + libxpm-dev \ + libzip-dev \ + postgresql-dev \ + rabbitmq-c-dev \ + g++ \ + imagemagick-dev" + +ARG PHP_EXTENSIONS="\ + bcmath \ + bz2 \ + ftp \ + gd \ + gmp \ + intl \ + mysqli \ + opcache \ + pcntl \ + pdo_mysql \ + pdo_pgsql \ + pgsql \ + soap \ + sockets \ + zip" + +ARG PHP_PECL_EXTENSIONS="\ + apcu \ + redis" + +ARG ADDITIONAL_PHP_PECL_EXTENSIONS="\ + pcov \ + xdebug \ + xhprof \ + excimer \ + amqp \ + imagick" + +ARG GRAPHVIZ_BUILD_DEPS="\ + expat-dev" + +ARG CFLAGS="-I/usr/src/php" +RUN apk update \ + && apk upgrade \ + && apk add --no-cache \ + bash \ + coreutils \ + curl \ + g++ \ + git \ + make \ + mysql-client \ + netcat-openbsd \ + openssh \ + postgresql-client \ + procps \ + python3 \ + shadow \ + unzip \ + linux-headers \ + libstdc++ \ + openssl-dev \ + zlib-dev \ + scdoc \ + ${PHP_RUN_DEPS} \ + && apk add --no-cache --virtual .php-build-deps ${PHP_BUILD_DEPS} \ + && apk add --no-cache --virtual .graphviz-build-deps ${GRAPHVIZ_BUILD_DEPS} \ + && rm -rf /var/lib/apt/lists/ \ + && cd /tmp \ + && git clone --depth 1 --branch v3.0.0_rc7 https://github.com/alpinelinux/apk-tools.git apk-tools-v3.0.0_rc7 \ + && cd apk-tools-v3.0.0_rc7 && make LUA=no && make LUA=no install \ + && cd /tmp \ + && curl -LO https://github.com/unicode-org/icu/releases/download/release-74-1/icu4c-74_1-src.tgz \ + && tar xzf icu4c-74_1-src.tgz \ + && cd icu/source && ./configure --prefix=/usr && make && make install \ + && cd /tmp \ + && rm -rf /tmp/apk-tools-v3.0.0_rc7 /tmp/icu4c-74_1-src.tgz /tmp/icu \ + && docker-php-ext-configure gd \ + --disable-gd-jis-conv \ + --with-freetype=/usr \ + --with-jpeg=/usr \ + --with-webp=/usr \ + --with-xpm=/usr \ + && docker-php-ext-install -j5 ${PHP_EXTENSIONS} \ + && pecl install -o -f ${PHP_PECL_EXTENSIONS} ${ADDITIONAL_PHP_PECL_EXTENSIONS} \ + && rm -rf /tmp/pear \ + && docker-php-ext-enable ${PHP_EXTENSIONS} ${PHP_PECL_EXTENSIONS} \ + && apk del --no-cache .php-build-deps + +# Related to https://github.com/docker-library/php/issues/240 +ENV LD_PRELOAD /usr/lib/preloadable_libiconv.so + +# Otel +RUN echo "https://dl-cdn.alpinelinux.org/alpine/v$(cut -d'.' -f1,2 /etc/alpine-release)/community" >> /etc/apk/repositories +RUN PHP_VERSION=$(php -r "echo PHP_MAJOR_VERSION.PHP_MINOR_VERSION;") \ + && apk add --no-cache \ + php${PHP_VERSION}-pecl-grpc \ + php${PHP_VERSION}-pecl-protobuf \ + php${PHP_VERSION}-pecl-opentelemetry + +RUN PHP_VERSION=$(php -r "echo PHP_MAJOR_VERSION.PHP_MINOR_VERSION;") \ + && EXT_DIR=$(php -r "echo ini_get('extension_dir');") \ + && ln -s /usr/lib/php${PHP_VERSION}/modules/grpc.so $EXT_DIR/grpc.so \ + && ln -s /usr/lib/php${PHP_VERSION}/modules/protobuf.so $EXT_DIR/protobuf.so \ + && ln -s /usr/lib/php${PHP_VERSION}/modules/opentelemetry.so $EXT_DIR/opentelemetry.so + +## Blackfire +ENV BLACKFIRE_AGENT_SOCKET='' +RUN architecture=$(case ${TARGETPLATFORM} in "linux/amd64") echo "amd64" ;; linux/arm64) echo "arm64" ;; *) echo "amd64" ;; esac) \ + && curl -A "Docker" -o /tmp/blackfire.so -D - -L -s https://packages.blackfire.io/binaries/blackfire-php/${BLACKFIRE_VERSION}/blackfire-php-alpine_${architecture}-php-${BLACKFIRE_PHP_VERSION}.so \ + && mv /tmp/blackfire.so $(php -r "echo ini_get ('extension_dir');")/blackfire.so + +# New Relic +ENV NEWRELIC_ENABLED=0 +ENV NEWRELIC_LICENSE='' +ENV NEWRELIC_APPNAME='Spryker' +ENV NEWRELIC_DISTRIBUTED_TRACING_ENABLED=0 +ENV NEWRELIC_TRANSACTION_TRACER_ENABLED=0 +ENV NEWRELIC_SPAN_EVENTS_ENABLED=0 +ENV NEWRELIC_TRANSACTION_TRACER_THRESHOLD=0 +ENV NEWRELIC_DISTRIBUTED_TRACING_EXCLUDE_NEWRELIC_HEADER=0 + +RUN bash -c 'curl -L "https://download.newrelic.com/php_agent/archive/${NEWRELIC_VERSION}/newrelic-php5-${NEWRELIC_VERSION}-linux-musl.tar.gz" | tar -C /tmp -zx \ + && export NR_INSTALL_USE_CP_NOT_LN=1 \ + && export NR_INSTALL_SILENT=1 \ + && /tmp/newrelic-php5-*/newrelic-install install \ + && rm -rf /tmp/newrelic-php5-* /tmp/nrinstall* \ + && /usr/bin/install -d -m 777 /var/log/newrelic/ \ + && rm /usr/local/etc/php/conf.d/newrelic.ini' + +# Tideways +ENV TIDEWAYS_APIKEY='' +ENV TIDEWAYS_DAEMON_URI='' +ENV TIDEWAYS_CLI_ENABLED=0 +RUN bash -c 'if [ "${TARGETPLATFORM}" == "linux/amd64" ]; then \ + wget "https://s3-eu-west-1.amazonaws.com/tideways/extension/${TIDEWAYS_VERSION}/tideways-php-${TIDEWAYS_VERSION}-alpine-x86_64.tar.gz" \ + && tar xvzf tideways-php-${TIDEWAYS_VERSION}-alpine-x86_64.tar.gz \ + && cp ./tideways-php-${TIDEWAYS_VERSION}/tideways-php-alpine-${TIDEWAYS_PHP_VERSION}.so $(php-config --extension-dir)/tideways.so; fi' + +RUN bash -c 'if [ "${TARGETPLATFORM}" == "linux/arm64" ]; then \ + wget "https://s3-eu-west-1.amazonaws.com/tideways/extension/${TIDEWAYS_VERSION}/tideways-php-${TIDEWAYS_VERSION}-alpine-arm64.tar.gz" \ + && tar xvzf tideways-php-${TIDEWAYS_VERSION}-alpine-arm64.tar.gz \ + && cp ./tideways-php-${TIDEWAYS_VERSION}/tideways-php-alpine-${TIDEWAYS_PHP_VERSION}.so $(php-config --extension-dir)/tideways.so; fi' + +# GraphViz 7.0.5 +RUN cd /tmp && \ + curl -L https://gitlab.com/api/v4/projects/4207231/packages/generic/graphviz-releases/7.0.5/graphviz-7.0.5.tar.gz | tar -zx && \ + cd /tmp/graphviz-7.0.5 && \ + ./configure && \ + make && \ + make install && \ + rm -rf /tmp/graphviz-7.0.5 && \ + apk del --no-cache .graphviz-build-deps + +# Opcache +RUN /usr/bin/install -d -m 777 /var/run/opcache + +# Remove default FPM pool +RUN rm /usr/local/etc/php-fpm.d/www.conf && \ + rm /usr/local/etc/php-fpm.d/docker.conf && \ + rm /usr/local/etc/php-fpm.d/zz-docker.conf + +# Add FPM configs +COPY context/php/php-fpm.d/worker.conf /usr/local/etc/php-fpm.d/worker.conf +COPY context/php/php-fpm.conf /usr/local/etc/php-fpm.conf + +# Copy php.ini configuration +COPY context/php/php.ini /usr/local/etc/php/ +COPY context/php/conf.d/90-opcache.ini /usr/local/etc/php/conf.d/ +COPY context/php/conf.d/92-session.ini /usr/local/etc/php/conf.d/ +COPY context/php/disabled /usr/local/etc/php/disabled + +WORKDIR /data + +# Install composer +RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer --version=${COMPOSER_VERSION} + +# Create application user 'spryker' +RUN addgroup spryker && \ + adduser -h /home/spryker -s /bin/sh -G www-data -D spryker && \ + chown spryker:spryker ${srcRoot} + +USER spryker +ENV COMPOSER_MEMORY_LIMIT=-1 +RUN mkdir -p /home/spryker/.composer +RUN bash -c '[[ $COMPOSER_VERSION == "1"* ]] && composer global require hirak/prestissimo && rm -rf /home/spryker/.composer/cache || true' + +USER root + diff --git a/alpine/3.24/8.4/Dockerfile b/alpine/3.24/8.4/Dockerfile new file mode 100644 index 00000000..2ce66f63 --- /dev/null +++ b/alpine/3.24/8.4/Dockerfile @@ -0,0 +1,230 @@ +# syntax = docker/dockerfile:1.0.2-experimental +ARG SPRYKER_PHP_VERSION=8.4.24 +FROM php:${SPRYKER_PHP_VERSION}-fpm-alpine3.24 + +ARG TARGETPLATFORM +ARG COMPOSER_VERSION=2.10.2 +ARG BLACKFIRE_VERSION=1.92.48 +ARG BLACKFIRE_PHP_VERSION=84 +ARG NEWRELIC_VERSION=12.9.0.38 +ARG TIDEWAYS_VERSION=5.42.0 +ARG TIDEWAYS_PHP_VERSION=8.4 + +ENV srcRoot /data +RUN mkdir -p ${srcRoot} + +ARG PHP_RUN_DEPS="\ + freetype \ + gmp \ + gnu-libiconv \ + icu-libs \ + libbz2 \ + libc6-compat \ + libjpeg-turbo \ + libpng \ + libwebp \ + libxml2 \ + libxpm \ + libxslt \ + libzip \ + rabbitmq-c \ + imagemagick" + +ARG PHP_BUILD_DEPS="\ + autoconf \ + bzip2-dev \ + freetype-dev \ + gmp-dev \ + icu-dev \ + icu-data-full \ + libjpeg-turbo-dev \ + libpng-dev \ + libwebp-dev \ + libxml2-dev \ + libxpm-dev \ + libzip-dev \ + postgresql-dev \ + rabbitmq-c-dev \ + g++ \ + imagemagick-dev" + +ARG PHP_EXTENSIONS="\ + bcmath \ + bz2 \ + ftp \ + gd \ + gmp \ + intl \ + mysqli \ + opcache \ + pcntl \ + pdo_mysql \ + pdo_pgsql \ + pgsql \ + soap \ + sockets \ + zip" + +ARG PHP_PECL_EXTENSIONS="\ + apcu \ + redis" + +ARG ADDITIONAL_PHP_PECL_EXTENSIONS="\ + pcov \ + xdebug \ + xhprof \ + excimer \ + amqp \ + imagick" + +ARG GRAPHVIZ_BUILD_DEPS="\ + expat-dev" + +ARG CFLAGS="-I/usr/src/php" +RUN apk update \ + && apk upgrade \ + && apk add --no-cache \ + bash \ + coreutils \ + curl \ + g++ \ + git \ + make \ + mysql-client \ + netcat-openbsd \ + openssh \ + postgresql-client \ + procps \ + python3 \ + shadow \ + unzip \ + linux-headers \ + libstdc++ \ + openssl-dev \ + zlib-dev \ + scdoc \ + ${PHP_RUN_DEPS} \ + && apk add --no-cache --virtual .php-build-deps ${PHP_BUILD_DEPS} \ + && apk add --no-cache --virtual .graphviz-build-deps ${GRAPHVIZ_BUILD_DEPS} \ + && rm -rf /var/lib/apt/lists/ \ + && cd /tmp \ + && git clone --depth 1 --branch v3.0.0_rc7 https://github.com/alpinelinux/apk-tools.git apk-tools-v3.0.0_rc7 \ + && cd apk-tools-v3.0.0_rc7 && make LUA=no && make LUA=no install \ + && cd /tmp \ + && curl -LO https://github.com/unicode-org/icu/releases/download/release-74-1/icu4c-74_1-src.tgz \ + && tar xzf icu4c-74_1-src.tgz \ + && cd icu/source && ./configure --prefix=/usr && make && make install \ + && cd /tmp \ + && rm -rf /tmp/apk-tools-v3.0.0_rc7 /tmp/icu4c-74_1-src.tgz /tmp/icu \ + && docker-php-ext-configure gd \ + --disable-gd-jis-conv \ + --with-freetype=/usr \ + --with-jpeg=/usr \ + --with-webp=/usr \ + --with-xpm=/usr \ + && docker-php-ext-install -j5 ${PHP_EXTENSIONS} \ + && pecl install -o -f ${PHP_PECL_EXTENSIONS} ${ADDITIONAL_PHP_PECL_EXTENSIONS} \ + && rm -rf /tmp/pear \ + && docker-php-ext-enable ${PHP_EXTENSIONS} ${PHP_PECL_EXTENSIONS} \ + && apk del --no-cache .php-build-deps + +# Related to https://github.com/docker-library/php/issues/240 +ENV LD_PRELOAD /usr/lib/preloadable_libiconv.so + +# Otel +RUN echo "https://dl-cdn.alpinelinux.org/alpine/v$(cut -d'.' -f1,2 /etc/alpine-release)/community" >> /etc/apk/repositories +RUN PHP_VERSION=$(php -r "echo PHP_MAJOR_VERSION.PHP_MINOR_VERSION;") \ + && apk add --no-cache \ + php${PHP_VERSION}-pecl-grpc \ + php${PHP_VERSION}-pecl-protobuf \ + php${PHP_VERSION}-pecl-opentelemetry + +RUN PHP_VERSION=$(php -r "echo PHP_MAJOR_VERSION.PHP_MINOR_VERSION;") \ + && EXT_DIR=$(php -r "echo ini_get('extension_dir');") \ + && ln -s /usr/lib/php${PHP_VERSION}/modules/grpc.so $EXT_DIR/grpc.so \ + && ln -s /usr/lib/php${PHP_VERSION}/modules/protobuf.so $EXT_DIR/protobuf.so \ + && ln -s /usr/lib/php${PHP_VERSION}/modules/opentelemetry.so $EXT_DIR/opentelemetry.so + +## Blackfire +ENV BLACKFIRE_AGENT_SOCKET='' +RUN architecture=$(case ${TARGETPLATFORM} in "linux/amd64") echo "amd64" ;; linux/arm64) echo "arm64" ;; *) echo "amd64" ;; esac) \ + && curl -A "Docker" -o /tmp/blackfire.so -D - -L -s https://packages.blackfire.io/binaries/blackfire-php/${BLACKFIRE_VERSION}/blackfire-php-alpine_${architecture}-php-${BLACKFIRE_PHP_VERSION}.so \ + && mv /tmp/blackfire.so $(php -r "echo ini_get ('extension_dir');")/blackfire.so + +# New Relic +ENV NEWRELIC_ENABLED=0 +ENV NEWRELIC_LICENSE='' +ENV NEWRELIC_APPNAME='Spryker' +ENV NEWRELIC_DISTRIBUTED_TRACING_ENABLED=0 +ENV NEWRELIC_TRANSACTION_TRACER_ENABLED=0 +ENV NEWRELIC_SPAN_EVENTS_ENABLED=0 +ENV NEWRELIC_TRANSACTION_TRACER_THRESHOLD=0 +ENV NEWRELIC_DISTRIBUTED_TRACING_EXCLUDE_NEWRELIC_HEADER=0 + +RUN bash -c 'curl -L "https://download.newrelic.com/php_agent/archive/${NEWRELIC_VERSION}/newrelic-php5-${NEWRELIC_VERSION}-linux-musl.tar.gz" | tar -C /tmp -zx \ + && export NR_INSTALL_USE_CP_NOT_LN=1 \ + && export NR_INSTALL_SILENT=1 \ + && /tmp/newrelic-php5-*/newrelic-install install \ + && rm -rf /tmp/newrelic-php5-* /tmp/nrinstall* \ + && /usr/bin/install -d -m 777 /var/log/newrelic/ \ + && rm /usr/local/etc/php/conf.d/newrelic.ini' + +# Tideways +ENV TIDEWAYS_APIKEY='' +ENV TIDEWAYS_DAEMON_URI='' +ENV TIDEWAYS_CLI_ENABLED=0 +RUN bash -c 'if [ "${TARGETPLATFORM}" == "linux/amd64" ]; then \ + wget "https://s3-eu-west-1.amazonaws.com/tideways/extension/${TIDEWAYS_VERSION}/tideways-php-${TIDEWAYS_VERSION}-alpine-x86_64.tar.gz" \ + && tar xvzf tideways-php-${TIDEWAYS_VERSION}-alpine-x86_64.tar.gz \ + && cp ./tideways-php-${TIDEWAYS_VERSION}/tideways-php-alpine-${TIDEWAYS_PHP_VERSION}.so $(php-config --extension-dir)/tideways.so; fi' + +RUN bash -c 'if [ "${TARGETPLATFORM}" == "linux/arm64" ]; then \ + wget "https://s3-eu-west-1.amazonaws.com/tideways/extension/${TIDEWAYS_VERSION}/tideways-php-${TIDEWAYS_VERSION}-alpine-arm64.tar.gz" \ + && tar xvzf tideways-php-${TIDEWAYS_VERSION}-alpine-arm64.tar.gz \ + && cp ./tideways-php-${TIDEWAYS_VERSION}/tideways-php-alpine-${TIDEWAYS_PHP_VERSION}.so $(php-config --extension-dir)/tideways.so; fi' + +# GraphViz 7.0.5 +RUN cd /tmp && \ + curl -L https://gitlab.com/api/v4/projects/4207231/packages/generic/graphviz-releases/7.0.5/graphviz-7.0.5.tar.gz | tar -zx && \ + cd /tmp/graphviz-7.0.5 && \ + ./configure && \ + make && \ + make install && \ + rm -rf /tmp/graphviz-7.0.5 && \ + apk del --no-cache .graphviz-build-deps + +# Opcache +RUN /usr/bin/install -d -m 777 /var/run/opcache + +# Remove default FPM pool +RUN rm /usr/local/etc/php-fpm.d/www.conf && \ + rm /usr/local/etc/php-fpm.d/docker.conf && \ + rm /usr/local/etc/php-fpm.d/zz-docker.conf + +# Add FPM configs +COPY context/php/php-fpm.d/worker.conf /usr/local/etc/php-fpm.d/worker.conf +COPY context/php/php-fpm.conf /usr/local/etc/php-fpm.conf + +# Copy php.ini configuration +COPY context/php/php.ini /usr/local/etc/php/ +COPY context/php/conf.d/90-opcache.ini /usr/local/etc/php/conf.d/ +COPY context/php/conf.d/92-session.ini /usr/local/etc/php/conf.d/ +COPY context/php/disabled /usr/local/etc/php/disabled + +WORKDIR /data + +# Install composer +RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer --version=${COMPOSER_VERSION} + +# Create application user 'spryker' +RUN addgroup spryker && \ + adduser -h /home/spryker -s /bin/sh -G www-data -D spryker && \ + chown spryker:spryker ${srcRoot} + +USER spryker +ENV COMPOSER_MEMORY_LIMIT=-1 +RUN mkdir -p /home/spryker/.composer +RUN bash -c '[[ $COMPOSER_VERSION == "1"* ]] && composer global require hirak/prestissimo && rm -rf /home/spryker/.composer/cache || true' + +USER root + diff --git a/alpine/3.24/8.5/Dockerfile b/alpine/3.24/8.5/Dockerfile new file mode 100644 index 00000000..040ea507 --- /dev/null +++ b/alpine/3.24/8.5/Dockerfile @@ -0,0 +1,230 @@ +# syntax = docker/dockerfile:1.0.2-experimental +ARG SPRYKER_PHP_VERSION=8.5.9 +FROM php:${SPRYKER_PHP_VERSION}-fpm-alpine3.24 + +ARG TARGETPLATFORM +ARG COMPOSER_VERSION=2.10.2 +ARG BLACKFIRE_VERSION=1.92.53 +ARG BLACKFIRE_PHP_VERSION=85 +ARG NEWRELIC_VERSION=12.9.0.38 +ARG TIDEWAYS_VERSION=5.42.0 +ARG TIDEWAYS_PHP_VERSION=8.5 + +ENV srcRoot /data +RUN mkdir -p ${srcRoot} + +ARG PHP_RUN_DEPS="\ + freetype \ + gmp \ + gnu-libiconv \ + icu-libs \ + libbz2 \ + libc6-compat \ + libjpeg-turbo \ + libpng \ + libwebp \ + libxml2 \ + libxpm \ + libxslt \ + libzip \ + rabbitmq-c \ + imagemagick" + +ARG PHP_BUILD_DEPS="\ + autoconf \ + bzip2-dev \ + freetype-dev \ + gmp-dev \ + icu-dev \ + icu-data-full \ + libjpeg-turbo-dev \ + libpng-dev \ + libwebp-dev \ + libxml2-dev \ + libxpm-dev \ + libzip-dev \ + postgresql-dev \ + rabbitmq-c-dev \ + g++ \ + imagemagick-dev" + +# opcache is statically linked into the PHP 8.5 binary and can no longer be built +# as a shared module, so it is not listed here; 90-opcache.ini configures the built-in one. +ARG PHP_EXTENSIONS="\ + bcmath \ + bz2 \ + ftp \ + gd \ + gmp \ + intl \ + mysqli \ + pcntl \ + pdo_mysql \ + pdo_pgsql \ + pgsql \ + soap \ + sockets \ + zip" + +ARG PHP_PECL_EXTENSIONS="\ + apcu \ + redis" + +ARG ADDITIONAL_PHP_PECL_EXTENSIONS="\ + pcov \ + xdebug \ + xhprof \ + excimer \ + amqp \ + imagick" + +ARG GRAPHVIZ_BUILD_DEPS="\ + expat-dev" + +ARG CFLAGS="-I/usr/src/php" +RUN apk update \ + && apk upgrade \ + && apk add --no-cache \ + bash \ + coreutils \ + curl \ + g++ \ + git \ + make \ + mysql-client \ + netcat-openbsd \ + openssh \ + postgresql-client \ + procps \ + python3 \ + shadow \ + unzip \ + linux-headers \ + libstdc++ \ + openssl-dev \ + zlib-dev \ + scdoc \ + ${PHP_RUN_DEPS} \ + && apk add --no-cache --virtual .php-build-deps ${PHP_BUILD_DEPS} \ + && apk add --no-cache --virtual .graphviz-build-deps ${GRAPHVIZ_BUILD_DEPS} \ + && rm -rf /var/lib/apt/lists/ \ + && cd /tmp \ + && git clone --depth 1 --branch v3.0.0_rc7 https://github.com/alpinelinux/apk-tools.git apk-tools-v3.0.0_rc7 \ + && cd apk-tools-v3.0.0_rc7 && make LUA=no && make LUA=no install \ + && cd /tmp \ + && curl -LO https://github.com/unicode-org/icu/releases/download/release-74-1/icu4c-74_1-src.tgz \ + && tar xzf icu4c-74_1-src.tgz \ + && cd icu/source && ./configure --prefix=/usr && make && make install \ + && cd /tmp \ + && rm -rf /tmp/apk-tools-v3.0.0_rc7 /tmp/icu4c-74_1-src.tgz /tmp/icu \ + && docker-php-ext-configure gd \ + --disable-gd-jis-conv \ + --with-freetype=/usr \ + --with-jpeg=/usr \ + --with-webp=/usr \ + --with-xpm=/usr \ + && docker-php-ext-install -j5 ${PHP_EXTENSIONS} \ + && pecl install -o -f ${PHP_PECL_EXTENSIONS} ${ADDITIONAL_PHP_PECL_EXTENSIONS} \ + && rm -rf /tmp/pear \ + && docker-php-ext-enable ${PHP_EXTENSIONS} ${PHP_PECL_EXTENSIONS} \ + && apk del --no-cache .php-build-deps + +# Related to https://github.com/docker-library/php/issues/240 +ENV LD_PRELOAD /usr/lib/preloadable_libiconv.so + +# Otel +RUN echo "https://dl-cdn.alpinelinux.org/alpine/v$(cut -d'.' -f1,2 /etc/alpine-release)/community" >> /etc/apk/repositories +RUN PHP_VERSION=$(php -r "echo PHP_MAJOR_VERSION.PHP_MINOR_VERSION;") \ + && apk add --no-cache \ + php${PHP_VERSION}-pecl-grpc \ + php${PHP_VERSION}-pecl-protobuf \ + php${PHP_VERSION}-pecl-opentelemetry + +RUN PHP_VERSION=$(php -r "echo PHP_MAJOR_VERSION.PHP_MINOR_VERSION;") \ + && EXT_DIR=$(php -r "echo ini_get('extension_dir');") \ + && ln -s /usr/lib/php${PHP_VERSION}/modules/grpc.so $EXT_DIR/grpc.so \ + && ln -s /usr/lib/php${PHP_VERSION}/modules/protobuf.so $EXT_DIR/protobuf.so \ + && ln -s /usr/lib/php${PHP_VERSION}/modules/opentelemetry.so $EXT_DIR/opentelemetry.so + +## Blackfire +ENV BLACKFIRE_AGENT_SOCKET='' +RUN architecture=$(case ${TARGETPLATFORM} in "linux/amd64") echo "amd64" ;; linux/arm64) echo "arm64" ;; *) echo "amd64" ;; esac) \ + && curl -A "Docker" -o /tmp/blackfire.so -D - -L -s https://packages.blackfire.io/binaries/blackfire-php/${BLACKFIRE_VERSION}/blackfire-php-alpine_${architecture}-php-${BLACKFIRE_PHP_VERSION}.so \ + && mv /tmp/blackfire.so $(php -r "echo ini_get ('extension_dir');")/blackfire.so + +# New Relic +ENV NEWRELIC_ENABLED=0 +ENV NEWRELIC_LICENSE='' +ENV NEWRELIC_APPNAME='Spryker' +ENV NEWRELIC_DISTRIBUTED_TRACING_ENABLED=0 +ENV NEWRELIC_TRANSACTION_TRACER_ENABLED=0 +ENV NEWRELIC_SPAN_EVENTS_ENABLED=0 +ENV NEWRELIC_TRANSACTION_TRACER_THRESHOLD=0 +ENV NEWRELIC_DISTRIBUTED_TRACING_EXCLUDE_NEWRELIC_HEADER=0 + +RUN bash -c 'curl -L "https://download.newrelic.com/php_agent/archive/${NEWRELIC_VERSION}/newrelic-php5-${NEWRELIC_VERSION}-linux-musl.tar.gz" | tar -C /tmp -zx \ + && export NR_INSTALL_USE_CP_NOT_LN=1 \ + && export NR_INSTALL_SILENT=1 \ + && /tmp/newrelic-php5-*/newrelic-install install \ + && rm -rf /tmp/newrelic-php5-* /tmp/nrinstall* \ + && /usr/bin/install -d -m 777 /var/log/newrelic/ \ + && rm /usr/local/etc/php/conf.d/newrelic.ini' + +# Tideways +ENV TIDEWAYS_APIKEY='' +ENV TIDEWAYS_DAEMON_URI='' +ENV TIDEWAYS_CLI_ENABLED=0 +RUN bash -c 'if [ "${TARGETPLATFORM}" == "linux/amd64" ]; then \ + wget "https://s3-eu-west-1.amazonaws.com/tideways/extension/${TIDEWAYS_VERSION}/tideways-php-${TIDEWAYS_VERSION}-alpine-x86_64.tar.gz" \ + && tar xvzf tideways-php-${TIDEWAYS_VERSION}-alpine-x86_64.tar.gz \ + && cp ./tideways-php-${TIDEWAYS_VERSION}/tideways-php-alpine-${TIDEWAYS_PHP_VERSION}.so $(php-config --extension-dir)/tideways.so; fi' + +RUN bash -c 'if [ "${TARGETPLATFORM}" == "linux/arm64" ]; then \ + wget "https://s3-eu-west-1.amazonaws.com/tideways/extension/${TIDEWAYS_VERSION}/tideways-php-${TIDEWAYS_VERSION}-alpine-arm64.tar.gz" \ + && tar xvzf tideways-php-${TIDEWAYS_VERSION}-alpine-arm64.tar.gz \ + && cp ./tideways-php-${TIDEWAYS_VERSION}/tideways-php-alpine-${TIDEWAYS_PHP_VERSION}.so $(php-config --extension-dir)/tideways.so; fi' + +# GraphViz 7.0.5 +RUN cd /tmp && \ + curl -L https://gitlab.com/api/v4/projects/4207231/packages/generic/graphviz-releases/7.0.5/graphviz-7.0.5.tar.gz | tar -zx && \ + cd /tmp/graphviz-7.0.5 && \ + ./configure && \ + make && \ + make install && \ + rm -rf /tmp/graphviz-7.0.5 && \ + apk del --no-cache .graphviz-build-deps + +# Opcache +RUN /usr/bin/install -d -m 777 /var/run/opcache + +# Remove default FPM pool +RUN rm /usr/local/etc/php-fpm.d/www.conf && \ + rm /usr/local/etc/php-fpm.d/docker.conf && \ + rm /usr/local/etc/php-fpm.d/zz-docker.conf + +# Add FPM configs +COPY context/php/php-fpm.d/worker.conf /usr/local/etc/php-fpm.d/worker.conf +COPY context/php/php-fpm.conf /usr/local/etc/php-fpm.conf + +# Copy php.ini configuration +COPY context/php/php.ini /usr/local/etc/php/ +COPY context/php/conf.d/90-opcache.ini /usr/local/etc/php/conf.d/ +COPY context/php/conf.d/92-session.ini /usr/local/etc/php/conf.d/ +COPY context/php/disabled /usr/local/etc/php/disabled + +WORKDIR /data + +# Install composer +RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer --version=${COMPOSER_VERSION} + +# Create application user 'spryker' +RUN addgroup spryker && \ + adduser -h /home/spryker -s /bin/sh -G www-data -D spryker && \ + chown spryker:spryker ${srcRoot} + +USER spryker +ENV COMPOSER_MEMORY_LIMIT=-1 +RUN mkdir -p /home/spryker/.composer +RUN bash -c '[[ $COMPOSER_VERSION == "1"* ]] && composer global require hirak/prestissimo && rm -rf /home/spryker/.composer/cache || true' + +USER root diff --git a/debian/bullseye/8.1/Dockerfile b/debian/bookworm/8.5/Dockerfile similarity index 72% rename from debian/bullseye/8.1/Dockerfile rename to debian/bookworm/8.5/Dockerfile index d0923e2c..f6870475 100644 --- a/debian/bullseye/8.1/Dockerfile +++ b/debian/bookworm/8.5/Dockerfile @@ -1,16 +1,17 @@ # syntax=docker/dockerfile:1.7 -ARG SPRYKER_PHP_VERSION=8.1.33 +ARG SPRYKER_PHP_VERSION=8.5.9 -FROM php:${SPRYKER_PHP_VERSION}-fpm-bullseye +# PHP 8.5 is not published for "bullseye" upstream, so this image is based on "bookworm". +FROM php:${SPRYKER_PHP_VERSION}-fpm-bookworm SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG TARGETPLATFORM -ARG COMPOSER_VERSION=2.9.8 -ARG BLACKFIRE_VERSION=1.87.1 -ARG BLACKFIRE_PHP_VERSION=81 +ARG COMPOSER_VERSION=2.10.2 +ARG BLACKFIRE_VERSION=1.92.53 +ARG BLACKFIRE_PHP_VERSION=85 ARG NEWRELIC_VERSION=12.9.0.38 -ARG TIDEWAYS_VERSION=5.32.0 -ARG TIDEWAYS_PHP_VERSION=8.1 +ARG TIDEWAYS_VERSION=5.42.0 +ARG TIDEWAYS_PHP_VERSION=8.5 ARG GOLANG_VERSION=1.20.3 ENV srcRoot /data @@ -21,10 +22,10 @@ ARG PHP_RUN_DEPS="\ libbz2-1.0 \ libfreetype6 \ libgmp10 \ - libicu67 \ + libicu72 \ libjpeg62-turbo \ libpng16-16 \ - libwebp6 \ + libwebp7 \ libxml2 \ libxpm4 \ libxslt1.1 \ @@ -44,20 +45,23 @@ ARG PHP_BUILD_DEPS="\ libxml2-dev \ libxpm-dev \ libzip-dev \ + libssl-dev \ librabbitmq-dev \ libgrpc-dev \ libprotobuf-dev \ protobuf-compiler \ libmagickwand-dev" +# opcache is statically linked into the PHP 8.5 binary and can no longer be built +# as a shared module, so it is not listed here; 90-opcache.ini configures the built-in one. ARG PHP_EXTENSIONS="\ bcmath \ bz2 \ + ftp \ gd \ gmp \ intl \ mysqli \ - opcache \ pcntl \ pdo_mysql \ pdo_pgsql \ @@ -137,8 +141,8 @@ RUN DEBIAN_FRONTEND=noninteractive dpkg-reconfigure dash # Blackfire ENV BLACKFIRE_AGENT_SOCKET='' RUN architecture=$(case ${TARGETPLATFORM} in "linux/amd64") echo "amd64" ;; linux/arm64) echo "arm64" ;; *) echo "amd64" ;; esac) \ - && curl -A "Docker" -o /tmp/blackfire.so -D - -L -s https://packages.blackfire.io/binaries/blackfire-php/${BLACKFIRE_VERSION}/blackfire-php-linux_${architecture}-php-${BLACKFIRE_PHP_VERSION}.so \ - && mv /tmp/blackfire.so $(php -r "echo ini_get ('extension_dir');")/blackfire.so + && curl -A "Docker" -o /tmp/blackfire.so -D - -L -s https://packages.blackfire.io/binaries/blackfire-php/${BLACKFIRE_VERSION}/blackfire-php-linux_${architecture}-php-${BLACKFIRE_PHP_VERSION}.so \ + && mv /tmp/blackfire.so $(php -r "echo ini_get ('extension_dir');")/blackfire.so # New Relic ENV NEWRELIC_ENABLED=0 @@ -151,24 +155,24 @@ ENV NEWRELIC_TRANSACTION_TRACER_THRESHOLD=0 ENV NEWRELIC_DISTRIBUTED_TRACING_EXCLUDE_NEWRELIC_HEADER=0 RUN bash -c 'curl -L "https://download.newrelic.com/php_agent/archive/${NEWRELIC_VERSION}/newrelic-php5-${NEWRELIC_VERSION}-linux.tar.gz" | tar -C /tmp -zx \ - && export NR_INSTALL_USE_CP_NOT_LN=1 \ - && export NR_INSTALL_SILENT=1 \ - && /tmp/newrelic-php5-*/newrelic-install install \ - && rm -rf /tmp/newrelic-php5-* /tmp/nrinstall* \ - && /usr/bin/install -d -m 777 /var/log/newrelic/ \ - && rm /usr/local/etc/php/conf.d/newrelic.ini \ - && ln -s /lib64/ld-linux-x86-64.so.2 /lib/ld-linux-x86-64.so.2' + && export NR_INSTALL_USE_CP_NOT_LN=1 \ + && export NR_INSTALL_SILENT=1 \ + && /tmp/newrelic-php5-*/newrelic-install install \ + && rm -rf /tmp/newrelic-php5-* /tmp/nrinstall* \ + && /usr/bin/install -d -m 777 /var/log/newrelic/ \ + && rm /usr/local/etc/php/conf.d/newrelic.ini \ + && ln -s /lib64/ld-linux-x86-64.so.2 /lib/ld-linux-x86-64.so.2' # Tideways RUN bash -c 'if [ "${TARGETPLATFORM}" == "linux/amd64" ]; then \ - wget "https://s3-eu-west-1.amazonaws.com/tideways/extension/${TIDEWAYS_VERSION}/tideways-php-${TIDEWAYS_VERSION}-x86_64.tar.gz" && \ - tar xvzf tideways-php-${TIDEWAYS_VERSION}-x86_64.tar.gz && \ - cp ./tideways-php-${TIDEWAYS_VERSION}/tideways-php-${TIDEWAYS_PHP_VERSION}.so $(php-config --extension-dir)/tideways.so; fi' + wget "https://s3-eu-west-1.amazonaws.com/tideways/extension/${TIDEWAYS_VERSION}/tideways-php-${TIDEWAYS_VERSION}-x86_64.tar.gz" && \ + tar xvzf tideways-php-${TIDEWAYS_VERSION}-x86_64.tar.gz && \ + cp ./tideways-php-${TIDEWAYS_VERSION}/tideways-php-${TIDEWAYS_PHP_VERSION}.so $(php-config --extension-dir)/tideways.so; fi' RUN bash -c 'if [ "${TARGETPLATFORM}" == "linux/arm64" ]; then \ - wget "https://s3-eu-west-1.amazonaws.com/tideways/extension/${TIDEWAYS_VERSION}/tideways-php-${TIDEWAYS_VERSION}-arm64.tar.gz" && \ - tar xvzf tideways-php-${TIDEWAYS_VERSION}-arm64.tar.gz && \ - cp ./tideways-php-${TIDEWAYS_VERSION}/tideways-php-${TIDEWAYS_PHP_VERSION}.so $(php-config --extension-dir)/tideways.so; fi' + wget "https://s3-eu-west-1.amazonaws.com/tideways/extension/${TIDEWAYS_VERSION}/tideways-php-${TIDEWAYS_VERSION}-arm64.tar.gz" && \ + tar xvzf tideways-php-${TIDEWAYS_VERSION}-arm64.tar.gz && \ + cp ./tideways-php-${TIDEWAYS_VERSION}/tideways-php-${TIDEWAYS_PHP_VERSION}.so $(php-config --extension-dir)/tideways.so; fi' # Opcache RUN /usr/bin/install -d -m 777 /var/run/opcache diff --git a/debian/bullseye/8.2/Dockerfile b/debian/bullseye/8.2/Dockerfile index 7664c022..f7f23121 100644 --- a/debian/bullseye/8.2/Dockerfile +++ b/debian/bullseye/8.2/Dockerfile @@ -5,11 +5,11 @@ FROM php:${SPRYKER_PHP_VERSION}-fpm-bullseye SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG TARGETPLATFORM -ARG COMPOSER_VERSION=2.9.8 +ARG COMPOSER_VERSION=2.10.2 ARG BLACKFIRE_VERSION=1.87.1 ARG BLACKFIRE_PHP_VERSION=82 ARG NEWRELIC_VERSION=12.9.0.38 -ARG TIDEWAYS_VERSION=5.32.0 +ARG TIDEWAYS_VERSION=5.42.0 ARG TIDEWAYS_PHP_VERSION=8.2 ARG GOLANG_VERSION=1.20.3 diff --git a/debian/bullseye/8.3/Dockerfile b/debian/bullseye/8.3/Dockerfile index 86cab366..bec0f204 100644 --- a/debian/bullseye/8.3/Dockerfile +++ b/debian/bullseye/8.3/Dockerfile @@ -5,11 +5,11 @@ FROM php:${SPRYKER_PHP_VERSION}-fpm-bullseye SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG TARGETPLATFORM -ARG COMPOSER_VERSION=2.9.8 +ARG COMPOSER_VERSION=2.10.2 ARG BLACKFIRE_VERSION=1.92.48 ARG BLACKFIRE_PHP_VERSION=83 ARG NEWRELIC_VERSION=12.9.0.38 -ARG TIDEWAYS_VERSION=5.32.0 +ARG TIDEWAYS_VERSION=5.42.0 ARG TIDEWAYS_PHP_VERSION=8.3 ARG GOLANG_VERSION=1.20.3 diff --git a/debian/bullseye/8.4/Dockerfile b/debian/bullseye/8.4/Dockerfile index ef46e06e..30801309 100644 --- a/debian/bullseye/8.4/Dockerfile +++ b/debian/bullseye/8.4/Dockerfile @@ -5,11 +5,11 @@ FROM php:${SPRYKER_PHP_VERSION}-fpm-bullseye SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG TARGETPLATFORM -ARG COMPOSER_VERSION=2.9.8 +ARG COMPOSER_VERSION=2.10.2 ARG BLACKFIRE_VERSION=1.92.48 ARG BLACKFIRE_PHP_VERSION=84 ARG NEWRELIC_VERSION=12.9.0.38 -ARG TIDEWAYS_VERSION=5.32.0 +ARG TIDEWAYS_VERSION=5.42.0 ARG TIDEWAYS_PHP_VERSION=8.4 ARG GOLANG_VERSION=1.20.3 From f15811dc9add69e43712003cd6bbabdd2e6a45c1 Mon Sep 17 00:00:00 2001 From: Giovanni Piemontese <22853912+ynnoig@users.noreply.github.com> Date: Tue, 1 Sep 2026 14:30:45 +0200 Subject: [PATCH 3/4] chore: refactor build gh action to achieve build performance according platform architecture #minor --- .github/workflows/build.yml | 160 +++++++++++++++++++++++++++-------- Makefile | 29 +++++++ images.json | 37 ++++++++ scripts/build-images.sh | 163 ++++++++++++++++++++++++++++++++++++ 4 files changed, 355 insertions(+), 34 deletions(-) create mode 100644 Makefile create mode 100644 images.json create mode 100755 scripts/build-images.sh diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 918fce95..f667f093 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -9,46 +9,136 @@ on: paths: - "alpine/**" - "debian/**" + - "images.json" workflow_dispatch: +env: + IMAGE_NAME: loeffelhardt/php + jobs: - build: + # Single source of truth: images.json. Derive two matrices from it: + # - build_matrix: one entry per (image, platform), with the native + # runner to use for that platform (no QEMU). + # - merge_matrix: one entry per image, with its final tags, used to + # assemble the multi-arch manifest after the platform builds. + prepare: runs-on: ubuntu-latest + outputs: + build_matrix: ${{ steps.matrices.outputs.build_matrix }} + merge_matrix: ${{ steps.matrices.outputs.merge_matrix }} + steps: + - uses: actions/checkout@v7 + + - name: Derive matrices from images.json + id: matrices + run: | + build_matrix=$(jq -c '{ + include: [ + .[] as $img + | $img.platforms[] as $p + | { + id: ($img.id | gsub("/"; "-")), + image: $img.dockerfile, + platform: $p, + runner: ( + if $p == "linux/amd64" then "ubuntu-24.04" + elif $p == "linux/arm64" then "ubuntu-24.04-arm" + else "ubuntu-latest" + end + ) + } + ] + }' images.json) + + merge_matrix=$(jq -c '{ + include: [ + .[] | { id: (.id | gsub("/"; "-")), tags: .tags } + ] + }' images.json) + + echo "build_matrix=${build_matrix}" >> "$GITHUB_OUTPUT" + echo "merge_matrix=${merge_matrix}" >> "$GITHUB_OUTPUT" + + # Build each image natively on amd64 and arm64 runners (no QEMU emulation, + # full native compile speed). On `main` each variant is pushed by digest + # (untagged); the `merge` job later assembles the multi-arch manifests. + build: + needs: prepare + runs-on: ${{ matrix.runner }} strategy: fail-fast: false - matrix: - include: - ## Alpine + matrix: ${{ fromJson(needs.prepare.outputs.build_matrix) }} - ### Alpine 3.23 - PHP 8.4 - - image: "alpine/3.23/8.4/Dockerfile" - tags: [ "loeffelhardt/php:8.4-alpine3.23" ] - platforms: [ "linux/amd64", "linux/arm64" ] + steps: + - uses: actions/checkout@v7 + + - name: Prepare + run: | + platform=${{ matrix.platform }} + echo "PLATFORM_PAIR=${platform//\//-}" >> "$GITHUB_ENV" + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v4 + + - name: Login to DockerHub + if: github.ref == 'refs/heads/main' + uses: docker/login-action@v4 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} - ### Alpine 3.24 - PHP 8.4 & 8.5 - - image: "alpine/3.24/8.4/Dockerfile" - tags: [ "loeffelhardt/php:8.4-alpine3.24", "loeffelhardt/php:8.4" ] - platforms: [ "linux/amd64", "linux/arm64" ] + # On main: push the single-platform image by digest (no tags yet). + - name: Build and push by digest + if: github.ref == 'refs/heads/main' + id: build_push + uses: docker/build-push-action@v7 + with: + file: ${{ matrix.image }} + platforms: ${{ matrix.platform }} + outputs: type=image,name=${{ env.IMAGE_NAME }},push-by-digest=true,name-canonical=true,push=true - - image: "alpine/3.24/8.5/Dockerfile" - tags: [ "loeffelhardt/php:8.5-alpine3.24", "loeffelhardt/php:latest", "loeffelhardt/php:8.5" ] - platforms: [ "linux/amd64", "linux/arm64" ] + # On other branches/PRs: just build natively to validate, no push. + - name: Build (validate only) + if: github.ref != 'refs/heads/main' + uses: docker/build-push-action@v7 + with: + file: ${{ matrix.image }} + platforms: ${{ matrix.platform }} + push: false - ## Debian + - name: Export digest + if: github.ref == 'refs/heads/main' + run: | + mkdir -p /tmp/digests + digest="${{ steps.build_push.outputs.digest }}" + touch "/tmp/digests/${digest#sha256:}" - ### Debian bullseye - PHP 8.4 - - image: 'debian/bullseye/8.4/Dockerfile' - tags: [ 'loeffelhardt/php:8.4-debian' ] - platforms: [ "linux/amd64", "linux/arm64" ] + - name: Upload digest + if: github.ref == 'refs/heads/main' + uses: actions/upload-artifact@v7 + with: + name: digests-${{ matrix.id }}-${{ env.PLATFORM_PAIR }} + path: /tmp/digests/* + if-no-files-found: error + retention-days: 1 - ### Debian bookworm - PHP 8.5 - - image: 'debian/bookworm/8.5/Dockerfile' - tags: [ 'loeffelhardt/php:8.5-debian' ] - platforms: [ "linux/amd64", "linux/arm64" ] + # Assemble the final multi-arch manifest lists from the per-platform + # digests pushed above, tagging each image as defined in images.json. + merge: + if: github.ref == 'refs/heads/main' + needs: [ prepare, build ] + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: ${{ fromJson(needs.prepare.outputs.merge_matrix) }} steps: - - name: Set up QEMU - uses: docker/setup-qemu-action@v4 + - name: Download digests + uses: actions/download-artifact@v8 + with: + path: /tmp/digests + pattern: digests-${{ matrix.id }}-* + merge-multiple: true - name: Set up Docker Buildx uses: docker/setup-buildx-action@v4 @@ -59,11 +149,13 @@ jobs: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - - name: Build and push - id: docker_build - uses: docker/build-push-action@v7 - with: - push: ${{ github.ref == 'refs/heads/main' }} - file: ${{ matrix.image }} - tags: ${{ join(matrix.tags) }} - platforms: ${{ join(matrix.platforms) }} + - name: Create manifest list and push + working-directory: /tmp/digests + run: | + docker buildx imagetools create \ + $(printf -- '-t %s ' ${{ join(matrix.tags, ' ') }}) \ + $(printf '${{ env.IMAGE_NAME }}@sha256:%s ' *) + + - name: Inspect image + run: | + docker buildx imagetools inspect ${{ matrix.tags[0] }} diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..13f3faee --- /dev/null +++ b/Makefile @@ -0,0 +1,29 @@ +SHELL := /usr/bin/env bash +SCRIPT := scripts/build-images.sh + +.PHONY: help list login build push build-push clean + +help: ## Show this help + @echo "Usage: make [IMAGE=]" + @echo + @echo "IMAGE is an optional filter matched against the 'id' field in images.json" + @echo "(e.g. IMAGE=alpine/3.24/8.5, IMAGE=alpine, IMAGE=debian). Omit for all images." + @echo + @awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z0-9_-]+:.*?## / {printf " %-12s %s\n", $$1, $$2}' $(MAKEFILE_LIST) + +list: ## List all images/tags defined in images.json + @$(SCRIPT) list + +login: ## Log in to Docker Hub (prompts for username/password or token) + @$(SCRIPT) login + +build: ## Build images and warm the local buildx cache (no push). Use IMAGE= to filter. + @$(SCRIPT) build "$(IMAGE)" + +push: ## (Re)build from cache and push images to Docker Hub. Use IMAGE= to filter. + @$(SCRIPT) push "$(IMAGE)" + +build-push: build push ## Run build then push in sequence. + +clean: ## Remove the local buildx builder and cache + @$(SCRIPT) clean diff --git a/images.json b/images.json new file mode 100644 index 00000000..82df9101 --- /dev/null +++ b/images.json @@ -0,0 +1,37 @@ +[ + { + "id": "alpine/3.23/8.4", + "dockerfile": "alpine/3.23/8.4/Dockerfile", + "context": ".", + "platforms": ["linux/amd64", "linux/arm64"], + "tags": ["loeffelhardt/php:8.4-alpine3.23"] + }, + { + "id": "alpine/3.24/8.4", + "dockerfile": "alpine/3.24/8.4/Dockerfile", + "context": ".", + "platforms": ["linux/amd64", "linux/arm64"], + "tags": ["loeffelhardt/php:8.4-alpine3.24", "loeffelhardt/php:8.4"] + }, + { + "id": "alpine/3.24/8.5", + "dockerfile": "alpine/3.24/8.5/Dockerfile", + "context": ".", + "platforms": ["linux/amd64", "linux/arm64"], + "tags": ["loeffelhardt/php:8.5-alpine3.24", "loeffelhardt/php:latest", "loeffelhardt/php:8.5"] + }, + { + "id": "debian/bullseye/8.4", + "dockerfile": "debian/bullseye/8.4/Dockerfile", + "context": ".", + "platforms": ["linux/amd64", "linux/arm64"], + "tags": ["loeffelhardt/php:8.4-debian"] + }, + { + "id": "debian/bookworm/8.5", + "dockerfile": "debian/bookworm/8.5/Dockerfile", + "context": ".", + "platforms": ["linux/amd64", "linux/arm64"], + "tags": ["loeffelhardt/php:8.5-debian"] + } +] diff --git a/scripts/build-images.sh b/scripts/build-images.sh new file mode 100755 index 00000000..a82d1ec9 --- /dev/null +++ b/scripts/build-images.sh @@ -0,0 +1,163 @@ +#!/usr/bin/env bash +# +# Build and push loeffelhardt/php Docker images locally, faster than the +# GitHub Actions runner (which relies on slow QEMU emulation). +# +# Matrix of images/tags/platforms lives in images.json (single source of +# truth, kept in sync with .github/workflows/build.yml). +# +# Usage: +# scripts/build-images.sh build [IMAGE_ID] # build & warm local cache, no push +# scripts/build-images.sh push [IMAGE_ID] # (re)build from cache & push +# scripts/build-images.sh login # prompt for Docker Hub credentials +# scripts/build-images.sh list # list available IMAGE_IDs +# scripts/build-images.sh clean # remove builder & local cache +# +# IMAGE_ID is matched as a substring against the "id" field in images.json +# (e.g. "alpine/3.24/8.5", "alpine", "debian"). Omit to target all images. + +set -euo pipefail + +ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" +IMAGES_FILE="${ROOT_DIR}/images.json" +CACHE_DIR="${ROOT_DIR}/.buildx-cache" +BUILDER_NAME="el-docker-php-builder" + +log() { printf '\033[1;34m==>\033[0m %s\n' "$*"; } +warn() { printf '\033[1;33m!!\033[0m %s\n' "$*" >&2; } +die() { printf '\033[1;31mERROR:\033[0m %s\n' "$*" >&2; exit 1; } + +require_bin() { + command -v "$1" >/dev/null 2>&1 || die "'$1' is required but not installed." +} + +ensure_builder() { + if ! docker buildx inspect "${BUILDER_NAME}" >/dev/null 2>&1; then + log "Creating buildx builder '${BUILDER_NAME}'" + docker buildx create --name "${BUILDER_NAME}" --driver docker-container --bootstrap + fi + docker buildx use "${BUILDER_NAME}" +} + +docker_login() { + if [[ -n "${DOCKER_USERNAME:-}" && -n "${DOCKER_PASSWORD:-}" ]]; then + log "Logging in to Docker Hub as ${DOCKER_USERNAME} (from env)" + printf '%s' "${DOCKER_PASSWORD}" | docker login --username "${DOCKER_USERNAME}" --password-stdin + return + fi + + read -r -p "Docker Hub username (loeffelhardt-bot): " docker_user + read -r -s -p "Docker Hub password/token: " docker_pass + echo + [[ -n "${docker_user}" ]] || die "Username cannot be empty." + [[ -n "${docker_pass}" ]] || die "Password/token cannot be empty." + printf '%s' "${docker_pass}" | docker login --username "${docker_user}" --password-stdin +} + +# Print matrix entries matching optional filter, one JSON object per line. +matrix_entries() { + local filter="${1:-}" + if [[ -z "${filter}" ]]; then + jq -c '.[]' "${IMAGES_FILE}" + else + jq -c --arg f "${filter}" '.[] | select(.id | contains($f))' "${IMAGES_FILE}" + fi +} + +cache_path_for() { + local id="$1" + echo "${CACHE_DIR}/$(echo "${id}" | tr '/' '-')" +} + +# Run buildx for a single matrix entry. +# mode: "build" (cache only, no push) or "push" (build from cache + push) +run_entry() { + local entry="$1" mode="$2" + local id dockerfile context platforms cache_dir + id="$(jq -r '.id' <<<"${entry}")" + dockerfile="$(jq -r '.dockerfile' <<<"${entry}")" + context="$(jq -r '.context' <<<"${entry}")" + platforms="$(jq -r '.platforms | join(",")' <<<"${entry}")" + cache_dir="$(cache_path_for "${id}")" + mkdir -p "${cache_dir}" + + local -a tag_args=() + while IFS= read -r tag; do + tag_args+=(--tag "${tag}") + done < <(jq -r '.tags[]' <<<"${entry}") + + local -a output_args=() + if [[ "${mode}" == "push" ]]; then + output_args=(--push) + else + output_args=(--output type=cacheonly) + fi + + log "[${mode}] ${id} (platforms: ${platforms})" + ( + cd "${ROOT_DIR}" + docker buildx build \ + --platform "${platforms}" \ + --file "${dockerfile}" \ + "${tag_args[@]}" \ + --cache-from "type=local,src=${cache_dir}" \ + --cache-to "type=local,dest=${cache_dir},mode=max" \ + "${output_args[@]}" \ + "${context}" + ) +} + +cmd_build() { run_matrix "build" "${1:-}"; } +cmd_push() { run_matrix "push" "${1:-}"; } + +run_matrix() { + local mode="$1" filter="${2:-}" + local entries + entries="$(matrix_entries "${filter}")" + [[ -n "${entries}" ]] || die "No image matches filter '${filter}' in images.json" + + ensure_builder + + while IFS= read -r entry; do + run_entry "${entry}" "${mode}" + done <<<"${entries}" + + log "Done (${mode})." +} + +cmd_list() { + jq -r '.[] | "\(.id)\t\(.tags | join(", "))"' "${IMAGES_FILE}" | column -t -s $'\t' +} + +cmd_clean() { + log "Removing local buildx cache (${CACHE_DIR})" + rm -rf "${CACHE_DIR}" + if docker buildx inspect "${BUILDER_NAME}" >/dev/null 2>&1; then + log "Removing buildx builder '${BUILDER_NAME}'" + docker buildx rm "${BUILDER_NAME}" + fi +} + +usage() { + sed -n '2,20p' "${BASH_SOURCE[0]}" | sed 's/^# \{0,1\}//' +} + +main() { + require_bin docker + require_bin jq + docker buildx version >/dev/null 2>&1 || die "docker buildx plugin is required." + + local cmd="${1:-}" + [[ $# -gt 0 ]] && shift || true + + case "${cmd}" in + build) cmd_build "${1:-}" ;; + push) cmd_push "${1:-}" ;; + login) docker_login ;; + list) cmd_list ;; + clean) cmd_clean ;; + *) usage; exit 1 ;; + esac +} + +main "$@" From d1bf7f105eb4332cc486f070942304ab743f2d2a Mon Sep 17 00:00:00 2001 From: Giovanni Piemontese <22853912+ynnoig@users.noreply.github.com> Date: Tue, 1 Sep 2026 15:16:19 +0200 Subject: [PATCH 4/4] chore: fix libavif dep in bookworm image #patch --- debian/bookworm/8.5/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/bookworm/8.5/Dockerfile b/debian/bookworm/8.5/Dockerfile index 827c5a4e..320ef08b 100644 --- a/debian/bookworm/8.5/Dockerfile +++ b/debian/bookworm/8.5/Dockerfile @@ -19,7 +19,7 @@ ENV srcRoot /data RUN mkdir -p ${srcRoot} ARG PHP_RUN_DEPS="\ - libavif9 \ + libavif15 \ libbz2-1.0 \ libfreetype6 \ libgmp10 \