Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
4999f06
feat(newrelic-daemon): pick the daemon binary for the build architecture
mrrobot47 Oct 23, 2026
24e2a19
feat(mailhog): build MailHog v1.0.1 from source for every architecture
mrrobot47 Oct 23, 2026
8a598f3
test: add a smoke test for every image
mrrobot47 Oct 23, 2026
183e049
ci: build and publish images for linux/amd64 and linux/arm64
mrrobot47 Oct 23, 2026
0eeb726
fix(ci): don't let the nginx merge pick up nginx-proxy's digests
mrrobot47 Oct 23, 2026
fa296e7
test: check the ELF architecture of each image's key binaries
mrrobot47 Oct 23, 2026
9bea0e1
ci: log in to Docker Hub before the first build on tag runs
mrrobot47 Oct 23, 2026
7d66d5f
ci: pass GITHUB_TOKEN to the image builds as the github_token secret
mrrobot47 Oct 23, 2026
7c9384e
ci: add a one-time workflow for arm64 builds of legacy images
mrrobot47 Oct 23, 2026
48a1e5c
fix(ci): build legacy arm64 recipes from commit SHAs and verify stret…
mrrobot47 Oct 23, 2026
dd22593
fix(ci): ignore the container hostname in the MariaDB variable compar…
mrrobot47 Oct 23, 2026
9f071e7
fix(ci): allow the opcache.jit settings to be absent on arm64 php8.0
mrrobot47 Oct 23, 2026
0212bb3
fix(ci): read optional recipe fields as empty when absent
mrrobot47 Oct 23, 2026
7c3327d
fix(ci): bind apt to the verified stretch release files and serialize…
mrrobot47 Oct 23, 2026
4e5efee
ci: build php7.0-7.4 for arm64 without New Relic
mrrobot47 Oct 23, 2026
1ac9d6c
ci: stop publishing mariadb from the tag-triggered matrix
mrrobot47 Oct 23, 2026
38476cb
ci: default the one-time legacy tag to v4.14.0
mrrobot47 Oct 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .github/legacy-arm64/mariadb.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,4 +1,5 @@
-FROM mariadb:11.5
+# v4.9.1 was built from this MariaDB 10.11.14 index (docker-library/repo-info, 2025-09-02), not from the 11.5 named here.
+FROM mariadb:10.11.14@sha256:e4ad7c5ad8874c2b049cef7566ccf534856b9fcde1c3c89c3251e8fa6fd6915c
LABEL org.label-schema.schema-version="1.0.0"
LABEL org.label-schema.vendor="EasyEngine"
LABEL org.label-schema.name="db"
36 changes: 36 additions & 0 deletions .github/legacy-arm64/php5.6.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,5 +1,16 @@
FROM php:5.6-fpm

+# Frozen base: its Debian suites are only on snapshot.debian.org now and stretch's archive keys have expired.
+# /etc/apt/snapshot.sha256 pins the release files to the copies verified against those keys as of the amd64 build
+# date; the next RUN checks what apt fetched against it, and apt checks every index and package against those files.
+RUN set -e; l=snapshot.debian.org_archive; \
+ printf '%s %s\n' \
+ fe55c42941dd43102b9490af1678e7962ea1e257ccb8f942b43770475c336eb3 ${l}_debian_20230220T000000Z_dists_stretch_Release \
+ 35b3294728144de605c0192e533ca97de6b77112b52d565566ab5ce7ef432a2c ${l}_debian_20230220T000000Z_dists_stretch-updates_Release \
+ cb3eb154bf0311d53c98eab79692e55aae49a4bcf13c23bd12943a4fb5a0b05f ${l}_debian-security_20230220T000000Z_dists_stretch_updates_Release \
+ > /etc/apt/snapshot.sha256; \
+ sed -i -E 's#^deb http://(deb|security)\.debian\.org/(debian-security|debian) #deb [trusted=yes] http://snapshot.debian.org/archive/\2/20230220T000000Z #' /etc/apt/sources.list
+
LABEL maintainer="Riddhesh Sanghvi <riddhesh237@gmail.com>, Devarshi Sathiya <devarshisathiya5@gmail.com>"
LABEL org.label-schema.schema-version="1.0.0-rc1"
LABEL org.label-schema.vendor="EasyEngine"
@@ -7,6 +18,7 @@

RUN set -ex; \
apt-get update; \
+ (cd /var/lib/apt/lists && sha256sum -c /etc/apt/snapshot.sha256); \
apt-get install -y --no-install-recommends \
imagemagick \
less \
@@ -27,7 +39,7 @@
vim \
zip

-RUN pecl install imagick memcached-2.2.0; \
+RUN pecl install imagick-3.7.0 memcached-2.2.0; \
printf "\n" | pecl install mcrypt-1.0.1; \
printf "\n" | pecl install redis; \
docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr; \
45 changes: 45 additions & 0 deletions .github/legacy-arm64/php7.0.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,5 +1,16 @@
FROM php:7.0-fpm@sha256:8e8644c0fd61424939fff072ca617469550bbb659158301a2dcadf334746a1c2

+# Frozen base: its Debian suites are only on snapshot.debian.org now and stretch's archive keys have expired.
+# /etc/apt/snapshot.sha256 pins the release files to the copies verified against those keys as of the amd64 build
+# date; the next RUN checks what apt fetched against it, and apt checks every index and package against those files.
+RUN set -e; l=snapshot.debian.org_archive; \
+ printf '%s %s\n' \
+ fe55c42941dd43102b9490af1678e7962ea1e257ccb8f942b43770475c336eb3 ${l}_debian_20230421T000000Z_dists_stretch_Release \
+ 35b3294728144de605c0192e533ca97de6b77112b52d565566ab5ce7ef432a2c ${l}_debian_20230421T000000Z_dists_stretch-updates_Release \
+ cb3eb154bf0311d53c98eab79692e55aae49a4bcf13c23bd12943a4fb5a0b05f ${l}_debian-security_20230421T000000Z_dists_stretch_updates_Release \
+ > /etc/apt/snapshot.sha256; \
+ sed -i -E 's#^deb http://(deb|security)\.debian\.org/(debian-security|debian) #deb [trusted=yes] http://snapshot.debian.org/archive/\2/20230421T000000Z #' /etc/apt/sources.list
+
LABEL maintainer="Devarshi Sathiya <devarshisathiya5@gmail.com>, Riddhesh Sanghvi <riddhesh237@gmail.com>"
LABEL org.label-schema.schema-version="1.0.0-rc1"
LABEL org.label-schema.vendor="EasyEngine"
@@ -7,8 +18,11 @@

RUN set -ex; \
apt-get update; \
+ (cd /var/lib/apt/lists && sha256sum -c /etc/apt/snapshot.sha256); \
+ apt-get upgrade -y; \
apt-get install -y --no-install-recommends \
imagemagick \
+ openssl \
less \
mariadb-client msmtp \
libc-client-dev \
@@ -29,10 +43,10 @@
vim \
zip

-RUN pecl install imagick; \
- pecl install memcached; \
+RUN pecl install imagick-3.7.0; \
+ pecl install memcached-3.2.0; \
pecl install mcrypt-1.0.3; \
- pecl install redis; \
+ pecl install redis-5.3.7; \
docker-php-ext-configure gd --enable-gd-native-ttf --with-freetype-dir=/usr/include/freetype2 --with-png-dir=/usr/include --with-jpeg-dir=/usr/include --with-webp-dir=/usr/include; \
docker-php-ext-configure zip; \
docker-php-ext-install gd; \
22 changes: 22 additions & 0 deletions .github/legacy-arm64/php7.2.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,5 +1,8 @@
FROM php:7.2-fpm@sha256:a8d1ebf6390aa47574fd8aec875d907a4fa1169de8c88bd256890921e6454436

+# Frozen base: its Debian suites are only on snapshot.debian.org now; use the snapshot from the amd64 build date.
+RUN sed -i -E 's#^deb http://(deb|security)\.debian\.org/(debian-security|debian) #deb [check-valid-until=no] http://snapshot.debian.org/archive/\2/20241009T000000Z #' /etc/apt/sources.list
+
LABEL maintainer="Devarshi Sathiya <devarshisathiya5@gmail.com>, Riddhesh Sanghvi <riddhesh237@gmail.com>"
LABEL org.label-schema.schema-version="1.0.0-rc1"
LABEL org.label-schema.vendor="EasyEngine"
@@ -28,8 +31,8 @@
vim \
zip

-RUN pecl install imagick; \
- pecl install memcached; \
+RUN pecl install imagick-3.7.0; \
+ pecl install memcached-3.2.0; \
pecl install mcrypt-1.0.3; \
pecl install redis; \
docker-php-ext-configure gd --with-freetype-dir=/usr/include/freetype2 --with-png-dir=/usr/include --with-jpeg-dir=/usr/include; \
30 changes: 30 additions & 0 deletions .github/legacy-arm64/php7.3.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,5 +1,8 @@
FROM php:7.3-fpm@sha256:a810876c96407cbbddef949379d2057f4f85d5c1d892dcf2c8d9503239549990

+# Frozen base: its Debian suites are only on snapshot.debian.org now; use the snapshot from the amd64 build date.
+RUN sed -i -E 's#^deb http://(deb|security)\.debian\.org/(debian-security|debian) #deb [check-valid-until=no] http://snapshot.debian.org/archive/\2/20241009T000000Z #' /etc/apt/sources.list
+
LABEL maintainer="Devarshi Sathiya <devarshisathiya5@gmail.com>, Riddhesh Sanghvi <riddhesh237@gmail.com>"
LABEL org.label-schema.schema-version="1.0.0"
LABEL org.label-schema.vendor="EasyEngine"
@@ -30,13 +33,13 @@
vim \
zip

-RUN pecl install imagick; \
- pecl install memcached; \
- pecl install mcrypt; \
+RUN pecl install imagick-3.7.0; \
+ pecl install memcached-3.2.0; \
+ pecl install mcrypt-1.0.7; \
pecl install redis; \
- pecl install apcu; \
+ pecl install apcu-5.1.24; \
pecl install gmagick-2.0.6RC1; \
- pecl install timezonedb; \
+ pecl install timezonedb-2024.2; \
docker-php-ext-configure gd --with-freetype-dir=/usr/include/freetype2 --with-png-dir=/usr/include --with-jpeg-dir=/usr/include; \
docker-php-ext-configure zip; \
docker-php-ext-install gd; \
22 changes: 22 additions & 0 deletions .github/legacy-arm64/php7.4.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
--- a/Dockerfile
+++ b/Dockerfile
@@ -33,13 +33,13 @@
vim \
zip

-RUN pecl install imagick; \
- pecl install memcached; \
- pecl install mcrypt; \
- pecl install redis; \
- pecl install apcu; \
+RUN pecl install imagick-3.8.1; \
+ pecl install memcached-3.4.0; \
+ pecl install mcrypt-1.0.9; \
+ pecl install redis-6.3.0; \
+ pecl install apcu-5.1.28; \
pecl install gmagick-2.0.6RC1; \
- pecl install timezonedb; \
+ pecl install timezonedb-2026.4; \
docker-php-ext-configure gd --with-freetype --with-jpeg --with-webp; \
docker-php-ext-configure zip; \
docker-php-ext-install gd; \
31 changes: 31 additions & 0 deletions .github/legacy-arm64/php8.0.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
--- a/Dockerfile
+++ b/Dockerfile
@@ -33,13 +33,13 @@
vim \
zip

-RUN pecl install imagick; \
- pecl install memcached; \
- pecl install redis; \
- pecl install apcu; \
- pecl install mcrypt; \
+RUN pecl install imagick-3.8.1; \
+ pecl install memcached-3.4.0; \
+ pecl install redis-6.3.0; \
+ pecl install apcu-5.1.28; \
+ pecl install mcrypt-1.0.9; \
pecl install gmagick-2.0.6RC1; \
- pecl install timezonedb; \
+ pecl install timezonedb-2026.4; \
docker-php-ext-configure gd --with-freetype --with-jpeg --with-webp; \
docker-php-ext-configure zip; \
docker-php-ext-install gd; \
@@ -98,7 +98,7 @@
chown www-data:www-data /usr/local/etc/misc/msmtprc && \
chown www-data:www-data /etc/msmtprc

-RUN latest_build=$(curl -s https://download.newrelic.com/php_agent/release/ | grep 'linux.tar.gz' | sed 's/.*"\(.*\)".*/\1/') && \
+RUN latest_build=/php_agent/archive/12.11.0.40/newrelic-php5-12.11.0.40-linux.tar.gz && \
curl -L "https://download.newrelic.com$latest_build" | tar -C /tmp -zx && \
export NR_INSTALL_USE_CP_NOT_LN=1 && \
export NR_INSTALL_SILENT=1 && \
66 changes: 66 additions & 0 deletions .github/legacy-arm64/recipes.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
{
"php5.6": {
"amd64_tag": "v4.7.4",
"amd64_digest": "sha256:0d02a5f8d255a49f6f3207cf481795d0666995817784f8dfd6e29b92fc21508c",
"amd64_manifest": "sha256:0d02a5f8d255a49f6f3207cf481795d0666995817784f8dfd6e29b92fc21508c",
"ref": "681d01ac6c44ae7d9133e4f6e6606b34b44e2931",
"context": "php/5.6",
"newrelic": "none",
"note": "The published v4.7.4 image matches 681d01a, not the v4.7.4 tree (no tmux, no usermod). Patch: Debian snapshot of the amd64 build date (2023-02-20), imagick pinned to the amd64 version. mcrypt-1.0.1 and redis fail on PHP 5.6 and imagick is never enabled, exactly as on amd64."
},
"php7.0": {
"amd64_tag": "v4.7.4",
"amd64_digest": "sha256:dc42a302e1b29627c8dee3fb604fde824bda813336b4ced46b1f8064ab446dad",
"amd64_manifest": "sha256:dc42a302e1b29627c8dee3fb604fde824bda813336b4ced46b1f8064ab446dad",
"ref": "a528d2945d0ea4c2cc2dab241a7e34af3fc56950",
"context": "php/7.0",
"newrelic": "skip",
"note": "The published v4.7.4 image (= v4.6.6, built 2023-04-21) matches a528d29 plus 'apt-get upgrade -y' and the openssl package, which its history shows and no commit has. Patch: those two, the Debian snapshot of the build date, PECL versions pinned to the amd64 ones. mcrypt-1.0.3 fails on PHP 7.0, so imagick and redis are never enabled, exactly as on amd64. New Relic publishes no aarch64 agent for PHP 7.x, so arm64 ships without it (maintainer decision); newrelic.ini stays, without its extension line."
},
"php7.2": {
"amd64_tag": "v4.7.4",
"amd64_digest": "sha256:bd388833c25634a000207ea450bc4b4044c57ae722eb1fa24d3a550ada4f5d8a",
"amd64_manifest": "sha256:bd388833c25634a000207ea450bc4b4044c57ae722eb1fa24d3a550ada4f5d8a",
"ref": "7b74e928e21b6825c1c1e290918b324bdffb3a5a",
"context": "php/7.2",
"newrelic": "skip",
"note": "The published v4.7.4 image (built 2024-10-09) matches 7b74e92 (no WebP, no tmux). Patch: Debian snapshot of the build date, PECL versions pinned to the amd64 ones. redis fails on PHP 7.2, so imagick and mcrypt are never enabled, exactly as on amd64. New Relic publishes no aarch64 agent for PHP 7.x, so arm64 ships without it (maintainer decision); newrelic.ini stays, without its extension line."
},
"php7.3": {
"amd64_tag": "v4.7.4",
"amd64_digest": "sha256:e85e80a6392cec7d9dd9e9c68985d9e461ba70211d532bd7b009990f59081d4b",
"amd64_manifest": "sha256:e85e80a6392cec7d9dd9e9c68985d9e461ba70211d532bd7b009990f59081d4b",
"ref": "2807ccb3a6d371835488c950ec9164388a4d2c92",
"context": "php/7.3",
"newrelic": "skip",
"note": "The published v4.7.4 image (built 2024-10-09) matches 2807ccb (no WebP, no tmux). Patch: Debian snapshot of the build date, PECL versions pinned to the amd64 ones. redis fails on PHP 7.3, so imagick, mcrypt, timezonedb and apcu are never enabled, exactly as on amd64. New Relic publishes no aarch64 agent for PHP 7.x, so arm64 ships without it (maintainer decision); newrelic.ini stays, without its extension line."
},
"php7.4": {
"amd64_tag": "v4.13.0",
"amd64_digest": "sha256:f1a007ff60dd2a831449d8ac7795cc6381577ae887b8f316f3d2c37fabb5261f",
"amd64_manifest": "sha256:84463e410c19a1b5523dc7ee547042311f53d884ba30353228c47b8fef4b7905",
"ref": "7fa7f03ff62d9cd2ed55946223cbc1082a7d5cc5",
"context": "php/7.4",
"newrelic": "skip",
"note": "Built from the v4.13.0 tag (7fa7f03). Patch: PECL versions pinned to the amd64 ones. New Relic publishes no aarch64 agent for PHP 7.x, so arm64 ships without it (maintainer decision); newrelic.ini stays, without its extension line."
},
"php8.0": {
"amd64_tag": "v4.13.0",
"amd64_digest": "sha256:8a4848e0e574558dbc3eb7e0f7505d6e93a7d7a341d82120062a8547e1514f5b",
"amd64_manifest": "sha256:b7da1852dc8820982f61d249cdb4fd6ae124cec9c0f0f4f4435f49670b5c7f90",
"ref": "7fa7f03ff62d9cd2ed55946223cbc1082a7d5cc5",
"context": "php/8.0",
"newrelic": "agent",
"arm64_ini_absent": "^opcache\\.jit",
"note": "Built from the v4.13.0 tag (7fa7f03). Patch: PECL versions and the New Relic agent (12.11.0.40) pinned to the amd64 ones. PHP 8.0 has no JIT on AArch64 (it came in 8.1), so the opcache.jit* settings don't exist there; JIT is off on amd64 too (opcache.jit_buffer_size=0)."
},
"mariadb": {
"amd64_tag": "v4.9.1",
"amd64_digest": "sha256:607745183a0ecdf3b59ae0ff39d4a64703e85374eae6aab204183c3b7283b53f",
"amd64_manifest": "sha256:607745183a0ecdf3b59ae0ff39d4a64703e85374eae6aab204183c3b7283b53f",
"ref": "f6ce783aa21e6d8d4141083f969d5c0499719566",
"context": "mariadb",
"newrelic": "none",
"note": "Ref = the v4.9.1 tag. The published v4.9.1 image is MariaDB 10.11.14 on Ubuntu 22.04: its eight base layers are the amd64 image of mariadb:10.11.14@sha256:e4ad7c5a... (docker-library/repo-info, 2025-09-02), whose arm64 image is from the same official build. Patch: FROM that index instead of the mariadb:11.5 the tag names; ee.cnf and my.cnf are byte-identical to the published layers."
}
}
Loading