From 2a2a16f1d9ac6fa69c283b39f8f51e0ba251bacd Mon Sep 17 00:00:00 2001 From: Hailemichael Atrsaw Date: Fri, 13 Mar 2026 11:46:43 +0300 Subject: [PATCH 01/24] feat: add Docker-in-Docker Earthfile, README, and versions configuration --- containers/docker/Earthfile | 33 +++++++++++++++++++++++++++++++++ containers/docker/README.md | 19 +++++++++++++++++++ containers/docker/versions.yaml | 9 +++++++++ 3 files changed, 61 insertions(+) create mode 100644 containers/docker/Earthfile create mode 100644 containers/docker/README.md create mode 100644 containers/docker/versions.yaml diff --git a/containers/docker/Earthfile b/containers/docker/Earthfile new file mode 100644 index 0000000..44e714c --- /dev/null +++ b/containers/docker/Earthfile @@ -0,0 +1,33 @@ +VERSION 0.8 +IMPORT .. AS common + +ARG --global BASE_VERSION +ARG --global TAG +ARG --global GITHUB_REPOSITORY_OWNER +ARG BUILDX_VERSION=v0.20.1 + +docker-base: + FROM docker.io/docker:${BASE_VERSION}-dind + RUN apk add --no-cache \ + parallel \ + kubectl \ + bash \ + wget \ + ca-certificates + RUN mkdir -p ~/.docker/cli-plugins && \ + wget -O ~/.docker/cli-plugins/docker-buildx https://github.com/docker/buildx/releases/download/${BUILDX_VERSION}/buildx-${BUILDX_VERSION}.linux-amd64 && \ + chmod +x ~/.docker/cli-plugins/docker-buildx + RUN docker buildx version + DO common+ADD_LABELS + +validate: + FROM +docker-base + RUN --no-cache test -n "$BASE_VERSION" || (echo "BASE_VERSION is required" && exit 1) + +build: + BUILD +validate + FROM +docker-base + DO common+SAVE_IMAGE --IMAGE_NAME=docker --TAG=${TAG} --GITHUB_REPOSITORY_OWNER=${GITHUB_REPOSITORY_OWNER} + +build-multiplatform: + DO common+BUILD_MULTIPLATFORM --TARGET=./docker+build diff --git a/containers/docker/README.md b/containers/docker/README.md new file mode 100644 index 0000000..666baae --- /dev/null +++ b/containers/docker/README.md @@ -0,0 +1,19 @@ +# docker + +Aliased container image for Docker-in-Docker (dind) with buildx and additional tools. + +## Available Versions + + + +| Tag | Base Version | +| ---- | ------------ | +| `27` | 27 | + + + +## Usage + +```bash +docker pull ghcr.io/expnt/containers/docker: +``` diff --git a/containers/docker/versions.yaml b/containers/docker/versions.yaml new file mode 100644 index 0000000..aacc46c --- /dev/null +++ b/containers/docker/versions.yaml @@ -0,0 +1,9 @@ +image_name: docker +tag_pattern: "{base_version}" +versions: + - base_version: "27" +watch: + - pattern: ^\d+$ + source: docker.io/library/docker + target: base_version + type: docker From 0d483b8dd6b0c3c3e6da9dad6ab987a397a79f52 Mon Sep 17 00:00:00 2001 From: Hailemichael Atrsaw Date: Fri, 13 Mar 2026 11:56:16 +0300 Subject: [PATCH 02/24] fix: move BUILDX_VERSION argument to docker-base section in Earthfile --- containers/docker/Earthfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/containers/docker/Earthfile b/containers/docker/Earthfile index 44e714c..f1e9d9f 100644 --- a/containers/docker/Earthfile +++ b/containers/docker/Earthfile @@ -4,9 +4,9 @@ IMPORT .. AS common ARG --global BASE_VERSION ARG --global TAG ARG --global GITHUB_REPOSITORY_OWNER -ARG BUILDX_VERSION=v0.20.1 docker-base: + ARG BUILDX_VERSION=v0.20.1 FROM docker.io/docker:${BASE_VERSION}-dind RUN apk add --no-cache \ parallel \ From da4dd58679d198b7044fbdcd8e1a48642fa47b34 Mon Sep 17 00:00:00 2001 From: Hailemichael Atrsaw Date: Fri, 13 Mar 2026 11:59:14 +0300 Subject: [PATCH 03/24] feat: update README with Docker build commands and links --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 03ee2c4..c8c1c95 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,7 @@ +- [docker](./containers/docker/README.md) - `ghcr.io/expnt/containers/docker` - [minio](./containers/minio/README.md) - `ghcr.io/expnt/containers/minio` - [python](./containers/python/README.md) - `ghcr.io/expnt/containers/xep-python-iac` - [redis](./containers/redis/README.md) - `ghcr.io/expnt/containers/redis` @@ -27,6 +28,7 @@ poetry install # Build specific container (all versions, saves to local Docker) +poetry run containers build docker -o poetry run containers build timescaledb -o poetry run containers build supabase -o poetry run containers build minio -o @@ -34,12 +36,14 @@ poetry run containers build redis -o poetry run containers build python -o # Build specific version only +poetry run containers build docker -o --version 27 poetry run containers build minio -o --version 2022.2.7 # Build all containers (saves to local Docker) poetry run containers build --all -o # Build with multi-platform support (linux/amd64 and linux/arm64) +poetry run containers build docker -o -m poetry run containers build minio -o -m poetry run containers build redis -o -m poetry run containers build timescaledb -o -m From f018654238ee7807002eb0e50560d6944629b3b8 Mon Sep 17 00:00:00 2001 From: Hailemichael Atrsaw Date: Thu, 19 Mar 2026 10:25:22 +0300 Subject: [PATCH 04/24] feat: add Node container image --- README.md | 2 ++ containers/node/Earthfile | 22 ++++++++++++++++++++++ containers/node/README.md | 19 +++++++++++++++++++ containers/node/versions.yaml | 9 +++++++++ 4 files changed, 52 insertions(+) create mode 100644 containers/node/Earthfile create mode 100644 containers/node/README.md create mode 100644 containers/node/versions.yaml diff --git a/README.md b/README.md index c8c1c95..e46a7aa 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,7 @@ - [docker](./containers/docker/README.md) - `ghcr.io/expnt/containers/docker` - [minio](./containers/minio/README.md) - `ghcr.io/expnt/containers/minio` +- [node](./containers/node/README.md) - `ghcr.io/expnt/containers/node` - [python](./containers/python/README.md) - `ghcr.io/expnt/containers/xep-python-iac` - [redis](./containers/redis/README.md) - `ghcr.io/expnt/containers/redis` - [supabase](./containers/supabase/README.md) - `ghcr.io/expnt/containers/supabase` @@ -34,6 +35,7 @@ poetry run containers build supabase -o poetry run containers build minio -o poetry run containers build redis -o poetry run containers build python -o +poetry run containers build node -o # Build specific version only poetry run containers build docker -o --version 27 diff --git a/containers/node/Earthfile b/containers/node/Earthfile new file mode 100644 index 0000000..4ad914d --- /dev/null +++ b/containers/node/Earthfile @@ -0,0 +1,22 @@ +VERSION 0.8 +IMPORT .. AS common + +ARG --global BASE_VERSION +ARG --global TAG +ARG --global GITHUB_REPOSITORY_OWNER + +node-base: + FROM docker.io/library/node:${BASE_VERSION}-alpine + DO common+ADD_LABELS + +validate: + FROM +node-base + RUN --no-cache test -n "$BASE_VERSION" || (echo "BASE_VERSION is required" && exit 1) + +build: + BUILD +validate + FROM +node-base + DO common+SAVE_IMAGE --IMAGE_NAME=node --TAG=${TAG} --GITHUB_REPOSITORY_OWNER=${GITHUB_REPOSITORY_OWNER} + +build-multiplatform: + DO common+BUILD_MULTIPLATFORM --TARGET=./node+build diff --git a/containers/node/README.md b/containers/node/README.md new file mode 100644 index 0000000..a0d693b --- /dev/null +++ b/containers/node/README.md @@ -0,0 +1,19 @@ +# node + +Aliased container image for Node.js. + +## Available Versions + + + +| Tag | Base Version | +| ----------- | ------------ | +| `22-alpine` | 22 | + + + +## Usage + +```bash +docker pull ghcr.io/expnt/containers/node: +``` diff --git a/containers/node/versions.yaml b/containers/node/versions.yaml new file mode 100644 index 0000000..17c5eb2 --- /dev/null +++ b/containers/node/versions.yaml @@ -0,0 +1,9 @@ +image_name: node +tag_pattern: "{base_version}-alpine" +versions: + - base_version: "22" +watch: + - pattern: ^(22|23|24)\-alpine$ + source: docker.io/library/node + target: base_version + type: docker From 612a6f779b23516d76770e11770702527a18040b Mon Sep 17 00:00:00 2001 From: Hailemichael Atrsaw Date: Thu, 19 Mar 2026 10:36:43 +0300 Subject: [PATCH 05/24] feat: add PHP container image --- containers/php/Earthfile | 22 ++++++++++++++++++++++ containers/php/README.md | 19 +++++++++++++++++++ containers/php/versions.yaml | 9 +++++++++ 3 files changed, 50 insertions(+) create mode 100644 containers/php/Earthfile create mode 100644 containers/php/README.md create mode 100644 containers/php/versions.yaml diff --git a/containers/php/Earthfile b/containers/php/Earthfile new file mode 100644 index 0000000..826ed68 --- /dev/null +++ b/containers/php/Earthfile @@ -0,0 +1,22 @@ +VERSION 0.8 +IMPORT .. AS common + +ARG --global BASE_VERSION +ARG --global TAG +ARG --global GITHUB_REPOSITORY_OWNER + +php-base: + FROM docker.io/library/php:${BASE_VERSION}-fpm + DO common+ADD_LABELS + +validate: + FROM +php-base + RUN --no-cache test -n "$BASE_VERSION" || (echo "BASE_VERSION is required" && exit 1) + +build: + BUILD +validate + FROM +php-base + DO common+SAVE_IMAGE --IMAGE_NAME=php --TAG=${TAG} --GITHUB_REPOSITORY_OWNER=${GITHUB_REPOSITORY_OWNER} + +build-multiplatform: + DO common+BUILD_MULTIPLATFORM --TARGET=./php+build diff --git a/containers/php/README.md b/containers/php/README.md new file mode 100644 index 0000000..566d745 --- /dev/null +++ b/containers/php/README.md @@ -0,0 +1,19 @@ +# php + +Aliased container image for PHP. + +## Available Versions + + + +| Tag | Base Version | +| ----------- | ------------ | +| `8.1-fpm` | 8.1 | + + + +## Usage + +```bash +docker pull ghcr.io/expnt/containers/php: +``` diff --git a/containers/php/versions.yaml b/containers/php/versions.yaml new file mode 100644 index 0000000..0a9233c --- /dev/null +++ b/containers/php/versions.yaml @@ -0,0 +1,9 @@ +image_name: php +tag_pattern: "{base_version}-fpm" +versions: + - base_version: "8.1" +watch: + - pattern: ^(8\.1|8\.2|8\.3)\-fpm$ + source: docker.io/library/php + target: base_version + type: docker From 3a1124f1aa2671d446dcb7c5d8d1170829610a9f Mon Sep 17 00:00:00 2001 From: Hailemichael Atrsaw Date: Thu, 19 Mar 2026 16:27:04 +0300 Subject: [PATCH 06/24] fix: update PHP base version references in Earthfile, README, and versions.yaml --- containers/php/Earthfile | 2 +- containers/php/README.md | 2 +- containers/php/versions.yaml | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/containers/php/Earthfile b/containers/php/Earthfile index 826ed68..8a4a78f 100644 --- a/containers/php/Earthfile +++ b/containers/php/Earthfile @@ -6,7 +6,7 @@ ARG --global TAG ARG --global GITHUB_REPOSITORY_OWNER php-base: - FROM docker.io/library/php:${BASE_VERSION}-fpm + FROM docker.io/library/php:${BASE_VERSION} DO common+ADD_LABELS validate: diff --git a/containers/php/README.md b/containers/php/README.md index 566d745..b8c963b 100644 --- a/containers/php/README.md +++ b/containers/php/README.md @@ -8,7 +8,7 @@ Aliased container image for PHP. | Tag | Base Version | | ----------- | ------------ | -| `8.1-fpm` | 8.1 | +| `8.1-fpm` | 8.1-fpm | diff --git a/containers/php/versions.yaml b/containers/php/versions.yaml index 0a9233c..00f4843 100644 --- a/containers/php/versions.yaml +++ b/containers/php/versions.yaml @@ -1,9 +1,9 @@ image_name: php -tag_pattern: "{base_version}-fpm" +tag_pattern: "{base_version}" versions: - - base_version: "8.1" + - base_version: "8.1-fpm" watch: - - pattern: ^(8\.1|8\.2|8\.3)\-fpm$ + - pattern: ^(8\.1-fpm|8\.2-fpm|8\.3-fpm)$ source: docker.io/library/php target: base_version type: docker From d127b29712bb8f7ccc144cd1b42d4f064a972343 Mon Sep 17 00:00:00 2001 From: Hailemichael Atrsaw Date: Thu, 19 Mar 2026 16:28:47 +0300 Subject: [PATCH 07/24] fix: update Node image references to remove '-alpine' suffix --- containers/node/Earthfile | 2 +- containers/node/README.md | 2 +- containers/node/versions.yaml | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/containers/node/Earthfile b/containers/node/Earthfile index 4ad914d..8208cb6 100644 --- a/containers/node/Earthfile +++ b/containers/node/Earthfile @@ -6,7 +6,7 @@ ARG --global TAG ARG --global GITHUB_REPOSITORY_OWNER node-base: - FROM docker.io/library/node:${BASE_VERSION}-alpine + FROM docker.io/library/node:${BASE_VERSION} DO common+ADD_LABELS validate: diff --git a/containers/node/README.md b/containers/node/README.md index a0d693b..6768941 100644 --- a/containers/node/README.md +++ b/containers/node/README.md @@ -8,7 +8,7 @@ Aliased container image for Node.js. | Tag | Base Version | | ----------- | ------------ | -| `22-alpine` | 22 | +| `22-alpine` | 22-alpine | diff --git a/containers/node/versions.yaml b/containers/node/versions.yaml index 17c5eb2..b289a77 100644 --- a/containers/node/versions.yaml +++ b/containers/node/versions.yaml @@ -1,9 +1,9 @@ image_name: node -tag_pattern: "{base_version}-alpine" +tag_pattern: "{base_version}" versions: - - base_version: "22" + - base_version: "22-alpine" watch: - - pattern: ^(22|23|24)\-alpine$ + - pattern: ^(22-alpine|23-alpine|24-alpine)$ source: docker.io/library/node target: base_version type: docker From 57220c7a79cddc77973c9043cc73d4ae8530aad9 Mon Sep 17 00:00:00 2001 From: Hailemichael Atrsaw Date: Mon, 23 Mar 2026 10:31:54 +0300 Subject: [PATCH 08/24] fix: improve buildx installation script for architecture support --- containers/docker/Earthfile | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/containers/docker/Earthfile b/containers/docker/Earthfile index f1e9d9f..92515fd 100644 --- a/containers/docker/Earthfile +++ b/containers/docker/Earthfile @@ -14,9 +14,21 @@ docker-base: bash \ wget \ ca-certificates - RUN mkdir -p ~/.docker/cli-plugins && \ - wget -O ~/.docker/cli-plugins/docker-buildx https://github.com/docker/buildx/releases/download/${BUILDX_VERSION}/buildx-${BUILDX_VERSION}.linux-amd64 && \ - chmod +x ~/.docker/cli-plugins/docker-buildx + RUN set -eux && \ + mkdir -p ~/.docker/cli-plugins && \ + cd /tmp && \ + ARCH=$(uname -m) && \ + case "${ARCH}" in \ + x86_64) ARCH="amd64" ;; \ + aarch64) ARCH="arm64" ;; \ + *) echo "Unsupported architecture: ${ARCH}" && exit 1 ;; \ + esac && \ + wget https://github.com/docker/buildx/releases/download/${BUILDX_VERSION}/buildx-${BUILDX_VERSION}.linux-${ARCH} && \ + wget https://github.com/docker/buildx/releases/download/${BUILDX_VERSION}/buildx-${BUILDX_VERSION}.linux-${ARCH}.sha256 && \ + sha256sum -c buildx-${BUILDX_VERSION}.linux-${ARCH}.sha256 && \ + mv buildx-${BUILDX_VERSION}.linux-${ARCH} ~/.docker/cli-plugins/docker-buildx && \ + chmod +x ~/.docker/cli-plugins/docker-buildx && \ + rm -f buildx-${BUILDX_VERSION}.linux-${ARCH}.sha256 RUN docker buildx version DO common+ADD_LABELS From 0d662d2ca8e3153507d11f00abe59cccb98d8314 Mon Sep 17 00:00:00 2001 From: Hailemichael Atrsaw Date: Mon, 23 Mar 2026 10:40:22 +0300 Subject: [PATCH 09/24] fix: streamline buildx installation script for architecture handling --- containers/docker/Earthfile | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/containers/docker/Earthfile b/containers/docker/Earthfile index 92515fd..0a981e4 100644 --- a/containers/docker/Earthfile +++ b/containers/docker/Earthfile @@ -23,12 +23,13 @@ docker-base: aarch64) ARCH="arm64" ;; \ *) echo "Unsupported architecture: ${ARCH}" && exit 1 ;; \ esac && \ - wget https://github.com/docker/buildx/releases/download/${BUILDX_VERSION}/buildx-${BUILDX_VERSION}.linux-${ARCH} && \ - wget https://github.com/docker/buildx/releases/download/${BUILDX_VERSION}/buildx-${BUILDX_VERSION}.linux-${ARCH}.sha256 && \ - sha256sum -c buildx-${BUILDX_VERSION}.linux-${ARCH}.sha256 && \ - mv buildx-${BUILDX_VERSION}.linux-${ARCH} ~/.docker/cli-plugins/docker-buildx && \ + BINARY="buildx-${BUILDX_VERSION}.linux-${ARCH}" && \ + wget "https://github.com/docker/buildx/releases/download/${BUILDX_VERSION}/${BINARY}" && \ + wget -O checksums.txt "https://github.com/docker/buildx/releases/download/${BUILDX_VERSION}/checksums.txt" && \ + grep "${BINARY}" checksums.txt | sha256sum -c - && \ + mv "${BINARY}" ~/.docker/cli-plugins/docker-buildx && \ chmod +x ~/.docker/cli-plugins/docker-buildx && \ - rm -f buildx-${BUILDX_VERSION}.linux-${ARCH}.sha256 + rm -f checksums.txt RUN docker buildx version DO common+ADD_LABELS From aa9da3dadd17cc3cafd058ac99b9eb946c84b765 Mon Sep 17 00:00:00 2001 From: Hailemichael Atrsaw Date: Mon, 23 Mar 2026 10:44:10 +0300 Subject: [PATCH 10/24] fix: correct checksum grep pattern and update build-multiplatform command --- containers/docker/Earthfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/containers/docker/Earthfile b/containers/docker/Earthfile index 0a981e4..40570ba 100644 --- a/containers/docker/Earthfile +++ b/containers/docker/Earthfile @@ -26,7 +26,7 @@ docker-base: BINARY="buildx-${BUILDX_VERSION}.linux-${ARCH}" && \ wget "https://github.com/docker/buildx/releases/download/${BUILDX_VERSION}/${BINARY}" && \ wget -O checksums.txt "https://github.com/docker/buildx/releases/download/${BUILDX_VERSION}/checksums.txt" && \ - grep "${BINARY}" checksums.txt | sha256sum -c - && \ + grep " ${BINARY}$" checksums.txt | sha256sum -c - && \ mv "${BINARY}" ~/.docker/cli-plugins/docker-buildx && \ chmod +x ~/.docker/cli-plugins/docker-buildx && \ rm -f checksums.txt @@ -43,4 +43,4 @@ build: DO common+SAVE_IMAGE --IMAGE_NAME=docker --TAG=${TAG} --GITHUB_REPOSITORY_OWNER=${GITHUB_REPOSITORY_OWNER} build-multiplatform: - DO common+BUILD_MULTIPLATFORM --TARGET=./docker+build + BUILD --platform=linux/amd64 --platform=linux/arm64 +build From 2727373bab95d6b3709d8fd5db390f62742ae42b Mon Sep 17 00:00:00 2001 From: Hailemichael Atrsaw Date: Mon, 23 Mar 2026 10:48:58 +0300 Subject: [PATCH 11/24] fix: update checksum verification method in buildx installation --- containers/docker/Earthfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/containers/docker/Earthfile b/containers/docker/Earthfile index 40570ba..f69a1e7 100644 --- a/containers/docker/Earthfile +++ b/containers/docker/Earthfile @@ -26,7 +26,8 @@ docker-base: BINARY="buildx-${BUILDX_VERSION}.linux-${ARCH}" && \ wget "https://github.com/docker/buildx/releases/download/${BUILDX_VERSION}/${BINARY}" && \ wget -O checksums.txt "https://github.com/docker/buildx/releases/download/${BUILDX_VERSION}/checksums.txt" && \ - grep " ${BINARY}$" checksums.txt | sha256sum -c - && \ + EXPECTED_CHECKSUM=$(awk "/${BINARY}\$/ && !/(provenance|sbom)/ {print \$1}" checksums.txt) && \ + echo "${EXPECTED_CHECKSUM} ${BINARY}" | sha256sum -c - && \ mv "${BINARY}" ~/.docker/cli-plugins/docker-buildx && \ chmod +x ~/.docker/cli-plugins/docker-buildx && \ rm -f checksums.txt From c3e9133888d5dd2ba7eddc2a74fb1124846b02f9 Mon Sep 17 00:00:00 2001 From: Hailemichael Atrsaw Date: Mon, 23 Mar 2026 10:51:41 +0300 Subject: [PATCH 12/24] fix: update build-multiplatform command to use common+BUILD_MULTIPLATFORM --- containers/docker/Earthfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/containers/docker/Earthfile b/containers/docker/Earthfile index f69a1e7..9d9516d 100644 --- a/containers/docker/Earthfile +++ b/containers/docker/Earthfile @@ -44,4 +44,4 @@ build: DO common+SAVE_IMAGE --IMAGE_NAME=docker --TAG=${TAG} --GITHUB_REPOSITORY_OWNER=${GITHUB_REPOSITORY_OWNER} build-multiplatform: - BUILD --platform=linux/amd64 --platform=linux/arm64 +build + DO common+BUILD_MULTIPLATFORM --TARGET=./docker+build From d22ddeef2f6487ea526a0f15e3a60af43b19336c Mon Sep 17 00:00:00 2001 From: Hailemichael Atrsaw Date: Mon, 23 Mar 2026 11:00:02 +0300 Subject: [PATCH 13/24] fix: update watch pattern in versions.yaml for dynamic version matching --- containers/node/versions.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/containers/node/versions.yaml b/containers/node/versions.yaml index b289a77..82be938 100644 --- a/containers/node/versions.yaml +++ b/containers/node/versions.yaml @@ -3,7 +3,7 @@ tag_pattern: "{base_version}" versions: - base_version: "22-alpine" watch: - - pattern: ^(22-alpine|23-alpine|24-alpine)$ + - pattern: ^(\d+)-alpine$ source: docker.io/library/node target: base_version type: docker From 6b0fc23229bf1816be82179336dd0dc36d36cd9f Mon Sep 17 00:00:00 2001 From: Hailemichael Atrsaw Date: Mon, 23 Mar 2026 11:04:30 +0300 Subject: [PATCH 14/24] fix: update watch pattern in versions.yaml for broader version matching --- containers/php/versions.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/containers/php/versions.yaml b/containers/php/versions.yaml index 00f4843..89d7ffd 100644 --- a/containers/php/versions.yaml +++ b/containers/php/versions.yaml @@ -3,7 +3,7 @@ tag_pattern: "{base_version}" versions: - base_version: "8.1-fpm" watch: - - pattern: ^(8\.1-fpm|8\.2-fpm|8\.3-fpm)$ + - pattern: ^[\d.]+-fpm$ source: docker.io/library/php target: base_version - type: docker + type: docker \ No newline at end of file From facb1bd1413eff2795896a8dde08999c76d91cb1 Mon Sep 17 00:00:00 2001 From: Hailemichael Atrsaw Date: Mon, 23 Mar 2026 11:13:14 +0300 Subject: [PATCH 15/24] fix: add 22-slim version to README and versions.yaml --- containers/node/README.md | 1 + containers/node/versions.yaml | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/containers/node/README.md b/containers/node/README.md index 6768941..0539f11 100644 --- a/containers/node/README.md +++ b/containers/node/README.md @@ -9,6 +9,7 @@ Aliased container image for Node.js. | Tag | Base Version | | ----------- | ------------ | | `22-alpine` | 22-alpine | +| `22-slim` | 22-slim | diff --git a/containers/node/versions.yaml b/containers/node/versions.yaml index 82be938..a667fa5 100644 --- a/containers/node/versions.yaml +++ b/containers/node/versions.yaml @@ -2,8 +2,13 @@ image_name: node tag_pattern: "{base_version}" versions: - base_version: "22-alpine" + - base_version: "22-slim" watch: - pattern: ^(\d+)-alpine$ source: docker.io/library/node target: base_version type: docker + - pattern: ^(\d+)-slim$ + source: docker.io/library/node + target: base_version + type: docker From 6bbec664e5a0c01f02d48a7599608bc0c1537b1e Mon Sep 17 00:00:00 2001 From: Hailemichael Atrsaw Date: Mon, 23 Mar 2026 11:22:56 +0300 Subject: [PATCH 16/24] feat: add Earthfile and versions.yaml for Python container with IAC tooling --- containers/{python => xep-python-iac}/Earthfile | 0 containers/{python => xep-python-iac}/README.md | 0 containers/{python => xep-python-iac}/versions.yaml | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename containers/{python => xep-python-iac}/Earthfile (100%) rename containers/{python => xep-python-iac}/README.md (100%) rename containers/{python => xep-python-iac}/versions.yaml (100%) diff --git a/containers/python/Earthfile b/containers/xep-python-iac/Earthfile similarity index 100% rename from containers/python/Earthfile rename to containers/xep-python-iac/Earthfile diff --git a/containers/python/README.md b/containers/xep-python-iac/README.md similarity index 100% rename from containers/python/README.md rename to containers/xep-python-iac/README.md diff --git a/containers/python/versions.yaml b/containers/xep-python-iac/versions.yaml similarity index 100% rename from containers/python/versions.yaml rename to containers/xep-python-iac/versions.yaml From b7c3f600d1366e24aa3ad9b3c09f8fcfde48f1b5 Mon Sep 17 00:00:00 2001 From: Hailemichael Atrsaw Date: Mon, 23 Mar 2026 11:30:42 +0300 Subject: [PATCH 17/24] feat: add Earthfile, README.md, and versions.yaml for Python container setup --- containers/python/Earthfile | 22 ++++++++++++++++++++++ containers/python/README.md | 19 +++++++++++++++++++ containers/python/versions.yaml | 9 +++++++++ 3 files changed, 50 insertions(+) create mode 100644 containers/python/Earthfile create mode 100644 containers/python/README.md create mode 100644 containers/python/versions.yaml diff --git a/containers/python/Earthfile b/containers/python/Earthfile new file mode 100644 index 0000000..96068b5 --- /dev/null +++ b/containers/python/Earthfile @@ -0,0 +1,22 @@ +VERSION 0.8 +IMPORT .. AS common + +ARG --global BASE_VERSION +ARG --global TAG +ARG --global GITHUB_REPOSITORY_OWNER + +python-base: + FROM docker.io/library/python:${BASE_VERSION} + DO common+ADD_LABELS + +validate: + FROM +python-base + RUN --no-cache test -n "$BASE_VERSION" || (echo "BASE_VERSION is required" && exit 1) + +build: + BUILD +validate + FROM +python-base + DO common+SAVE_IMAGE --IMAGE_NAME=python --TAG=${TAG} --GITHUB_REPOSITORY_OWNER=${GITHUB_REPOSITORY_OWNER} + +build-multiplatform: + DO common+BUILD_MULTIPLATFORM --TARGET=./python+build \ No newline at end of file diff --git a/containers/python/README.md b/containers/python/README.md new file mode 100644 index 0000000..404c40a --- /dev/null +++ b/containers/python/README.md @@ -0,0 +1,19 @@ +# python + +Aliased container image for Python. + +## Available Versions + + + +| Tag | Base Version | +| ----------- | ------------ | +| `3.12` | 3.12 | + + + +## Usage + +```bash +docker pull ghcr.io/expnt/containers/python: +``` diff --git a/containers/python/versions.yaml b/containers/python/versions.yaml new file mode 100644 index 0000000..dda7f75 --- /dev/null +++ b/containers/python/versions.yaml @@ -0,0 +1,9 @@ +image_name: python +tag_pattern: "{base_version}" +versions: + - base_version: "3.12" +watch: + - pattern: ^\d+\.\d+$ + source: docker.io/library/python + target: base_version + type: docker From 1a86735b6758ee3a6465a092b7d1b701851bd7f8 Mon Sep 17 00:00:00 2001 From: Hailemichael Atrsaw Date: Mon, 23 Mar 2026 11:35:42 +0300 Subject: [PATCH 18/24] feat: update README.md and versions.yaml to include Python 3.13-slim-bullseye --- containers/python/README.md | 7 ++++--- containers/python/versions.yaml | 5 +++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/containers/python/README.md b/containers/python/README.md index 404c40a..0f7e24a 100644 --- a/containers/python/README.md +++ b/containers/python/README.md @@ -6,9 +6,10 @@ Aliased container image for Python. -| Tag | Base Version | -| ----------- | ------------ | -| `3.12` | 3.12 | +| Tag | Base Version | +| -------------------- | ------------------ | +| `3.12` | 3.12 | +| `3.13-slim-bullseye` | 3.13-slim-bullseye | diff --git a/containers/python/versions.yaml b/containers/python/versions.yaml index dda7f75..32912a8 100644 --- a/containers/python/versions.yaml +++ b/containers/python/versions.yaml @@ -2,8 +2,13 @@ image_name: python tag_pattern: "{base_version}" versions: - base_version: "3.12" + - base_version: "3.13-slim-bullseye" watch: - pattern: ^\d+\.\d+$ source: docker.io/library/python target: base_version type: docker + - pattern: ^\d+\.\d+-slim-bullseye$ + source: docker.io/library/python + target: base_version + type: docker From e84b217ff6807ca40ebae1349fa621605a18d0c6 Mon Sep 17 00:00:00 2001 From: Hailemichael Atrsaw <99496150+hailatGH@users.noreply.github.com> Date: Mon, 23 Mar 2026 15:12:11 +0300 Subject: [PATCH 19/24] feat: add Node container image (#12) * feat: add Node container image * fix: update Node image references to remove '-alpine' suffix * fix: update watch pattern in versions.yaml for dynamic version matching --------- Co-authored-by: Hailemichael Atrsaw --- README.md | 2 ++ containers/node/Earthfile | 22 ++++++++++++++++++++++ containers/node/README.md | 19 +++++++++++++++++++ containers/node/versions.yaml | 9 +++++++++ 4 files changed, 52 insertions(+) create mode 100644 containers/node/Earthfile create mode 100644 containers/node/README.md create mode 100644 containers/node/versions.yaml diff --git a/README.md b/README.md index c8c1c95..e46a7aa 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,7 @@ - [docker](./containers/docker/README.md) - `ghcr.io/expnt/containers/docker` - [minio](./containers/minio/README.md) - `ghcr.io/expnt/containers/minio` +- [node](./containers/node/README.md) - `ghcr.io/expnt/containers/node` - [python](./containers/python/README.md) - `ghcr.io/expnt/containers/xep-python-iac` - [redis](./containers/redis/README.md) - `ghcr.io/expnt/containers/redis` - [supabase](./containers/supabase/README.md) - `ghcr.io/expnt/containers/supabase` @@ -34,6 +35,7 @@ poetry run containers build supabase -o poetry run containers build minio -o poetry run containers build redis -o poetry run containers build python -o +poetry run containers build node -o # Build specific version only poetry run containers build docker -o --version 27 diff --git a/containers/node/Earthfile b/containers/node/Earthfile new file mode 100644 index 0000000..8208cb6 --- /dev/null +++ b/containers/node/Earthfile @@ -0,0 +1,22 @@ +VERSION 0.8 +IMPORT .. AS common + +ARG --global BASE_VERSION +ARG --global TAG +ARG --global GITHUB_REPOSITORY_OWNER + +node-base: + FROM docker.io/library/node:${BASE_VERSION} + DO common+ADD_LABELS + +validate: + FROM +node-base + RUN --no-cache test -n "$BASE_VERSION" || (echo "BASE_VERSION is required" && exit 1) + +build: + BUILD +validate + FROM +node-base + DO common+SAVE_IMAGE --IMAGE_NAME=node --TAG=${TAG} --GITHUB_REPOSITORY_OWNER=${GITHUB_REPOSITORY_OWNER} + +build-multiplatform: + DO common+BUILD_MULTIPLATFORM --TARGET=./node+build diff --git a/containers/node/README.md b/containers/node/README.md new file mode 100644 index 0000000..6768941 --- /dev/null +++ b/containers/node/README.md @@ -0,0 +1,19 @@ +# node + +Aliased container image for Node.js. + +## Available Versions + + + +| Tag | Base Version | +| ----------- | ------------ | +| `22-alpine` | 22-alpine | + + + +## Usage + +```bash +docker pull ghcr.io/expnt/containers/node: +``` diff --git a/containers/node/versions.yaml b/containers/node/versions.yaml new file mode 100644 index 0000000..82be938 --- /dev/null +++ b/containers/node/versions.yaml @@ -0,0 +1,9 @@ +image_name: node +tag_pattern: "{base_version}" +versions: + - base_version: "22-alpine" +watch: + - pattern: ^(\d+)-alpine$ + source: docker.io/library/node + target: base_version + type: docker From 8c967f125864e36344c58810acca9144a24156ef Mon Sep 17 00:00:00 2001 From: Hailemichael Atrsaw <99496150+hailatGH@users.noreply.github.com> Date: Mon, 23 Mar 2026 15:13:01 +0300 Subject: [PATCH 20/24] feat: add PHP container image (#13) * feat: add PHP container image * fix: update PHP base version references in Earthfile, README, and versions.yaml * fix: update watch pattern in versions.yaml for broader version matching --------- Co-authored-by: Hailemichael Atrsaw --- containers/php/Earthfile | 22 ++++++++++++++++++++++ containers/php/README.md | 19 +++++++++++++++++++ containers/php/versions.yaml | 9 +++++++++ 3 files changed, 50 insertions(+) create mode 100644 containers/php/Earthfile create mode 100644 containers/php/README.md create mode 100644 containers/php/versions.yaml diff --git a/containers/php/Earthfile b/containers/php/Earthfile new file mode 100644 index 0000000..8a4a78f --- /dev/null +++ b/containers/php/Earthfile @@ -0,0 +1,22 @@ +VERSION 0.8 +IMPORT .. AS common + +ARG --global BASE_VERSION +ARG --global TAG +ARG --global GITHUB_REPOSITORY_OWNER + +php-base: + FROM docker.io/library/php:${BASE_VERSION} + DO common+ADD_LABELS + +validate: + FROM +php-base + RUN --no-cache test -n "$BASE_VERSION" || (echo "BASE_VERSION is required" && exit 1) + +build: + BUILD +validate + FROM +php-base + DO common+SAVE_IMAGE --IMAGE_NAME=php --TAG=${TAG} --GITHUB_REPOSITORY_OWNER=${GITHUB_REPOSITORY_OWNER} + +build-multiplatform: + DO common+BUILD_MULTIPLATFORM --TARGET=./php+build diff --git a/containers/php/README.md b/containers/php/README.md new file mode 100644 index 0000000..b8c963b --- /dev/null +++ b/containers/php/README.md @@ -0,0 +1,19 @@ +# php + +Aliased container image for PHP. + +## Available Versions + + + +| Tag | Base Version | +| ----------- | ------------ | +| `8.1-fpm` | 8.1-fpm | + + + +## Usage + +```bash +docker pull ghcr.io/expnt/containers/php: +``` diff --git a/containers/php/versions.yaml b/containers/php/versions.yaml new file mode 100644 index 0000000..89d7ffd --- /dev/null +++ b/containers/php/versions.yaml @@ -0,0 +1,9 @@ +image_name: php +tag_pattern: "{base_version}" +versions: + - base_version: "8.1-fpm" +watch: + - pattern: ^[\d.]+-fpm$ + source: docker.io/library/php + target: base_version + type: docker \ No newline at end of file From 431f89871149f197af203910d3408967a34e5211 Mon Sep 17 00:00:00 2001 From: Hailemichael Atrsaw <99496150+hailatGH@users.noreply.github.com> Date: Mon, 23 Mar 2026 15:21:02 +0300 Subject: [PATCH 21/24] fix: add 22-slim version to README and versions.yaml (#14) --- containers/node/README.md | 1 + containers/node/versions.yaml | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/containers/node/README.md b/containers/node/README.md index 6768941..0539f11 100644 --- a/containers/node/README.md +++ b/containers/node/README.md @@ -9,6 +9,7 @@ Aliased container image for Node.js. | Tag | Base Version | | ----------- | ------------ | | `22-alpine` | 22-alpine | +| `22-slim` | 22-slim | diff --git a/containers/node/versions.yaml b/containers/node/versions.yaml index 82be938..a667fa5 100644 --- a/containers/node/versions.yaml +++ b/containers/node/versions.yaml @@ -2,8 +2,13 @@ image_name: node tag_pattern: "{base_version}" versions: - base_version: "22-alpine" + - base_version: "22-slim" watch: - pattern: ^(\d+)-alpine$ source: docker.io/library/node target: base_version type: docker + - pattern: ^(\d+)-slim$ + source: docker.io/library/node + target: base_version + type: docker From 3849f5a4ebcab731cd94e039d86014bb60fd224e Mon Sep 17 00:00:00 2001 From: Hailemichael Atrsaw Date: Tue, 24 Mar 2026 15:18:23 +0300 Subject: [PATCH 22/24] fix: update container names and Earthfile commands --- README.md | 2 +- containers/docker/Earthfile | 2 +- containers/node/Earthfile | 2 +- containers/php/Earthfile | 2 +- containers/python/Earthfile | 2 +- containers/xep-python-iac/Earthfile | 2 +- containers/xep-python-iac/README.md | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index e46a7aa..c0d3f42 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ - [docker](./containers/docker/README.md) - `ghcr.io/expnt/containers/docker` - [minio](./containers/minio/README.md) - `ghcr.io/expnt/containers/minio` - [node](./containers/node/README.md) - `ghcr.io/expnt/containers/node` -- [python](./containers/python/README.md) - `ghcr.io/expnt/containers/xep-python-iac` +- [xep-python-iac](./containers/xep-python-iac/README.md) - `ghcr.io/expnt/containers/xep-python-iac` - [redis](./containers/redis/README.md) - `ghcr.io/expnt/containers/redis` - [supabase](./containers/supabase/README.md) - `ghcr.io/expnt/containers/supabase` - [timescaledb](./containers/timescaledb/README.md) - `ghcr.io/expnt/containers/timescaledb` diff --git a/containers/docker/Earthfile b/containers/docker/Earthfile index 9d9516d..eb30d1e 100644 --- a/containers/docker/Earthfile +++ b/containers/docker/Earthfile @@ -44,4 +44,4 @@ build: DO common+SAVE_IMAGE --IMAGE_NAME=docker --TAG=${TAG} --GITHUB_REPOSITORY_OWNER=${GITHUB_REPOSITORY_OWNER} build-multiplatform: - DO common+BUILD_MULTIPLATFORM --TARGET=./docker+build + DO --pass-args common+BUILD_MULTIPLATFORM --TARGET=./docker+build diff --git a/containers/node/Earthfile b/containers/node/Earthfile index 8208cb6..69b6bfa 100644 --- a/containers/node/Earthfile +++ b/containers/node/Earthfile @@ -19,4 +19,4 @@ build: DO common+SAVE_IMAGE --IMAGE_NAME=node --TAG=${TAG} --GITHUB_REPOSITORY_OWNER=${GITHUB_REPOSITORY_OWNER} build-multiplatform: - DO common+BUILD_MULTIPLATFORM --TARGET=./node+build + DO --pass-args common+BUILD_MULTIPLATFORM --TARGET=./node+build diff --git a/containers/php/Earthfile b/containers/php/Earthfile index 8a4a78f..a89a955 100644 --- a/containers/php/Earthfile +++ b/containers/php/Earthfile @@ -19,4 +19,4 @@ build: DO common+SAVE_IMAGE --IMAGE_NAME=php --TAG=${TAG} --GITHUB_REPOSITORY_OWNER=${GITHUB_REPOSITORY_OWNER} build-multiplatform: - DO common+BUILD_MULTIPLATFORM --TARGET=./php+build + DO --pass-argscommon+BUILD_MULTIPLATFORM --TARGET=./php+build diff --git a/containers/python/Earthfile b/containers/python/Earthfile index 96068b5..9cc6fc5 100644 --- a/containers/python/Earthfile +++ b/containers/python/Earthfile @@ -19,4 +19,4 @@ build: DO common+SAVE_IMAGE --IMAGE_NAME=python --TAG=${TAG} --GITHUB_REPOSITORY_OWNER=${GITHUB_REPOSITORY_OWNER} build-multiplatform: - DO common+BUILD_MULTIPLATFORM --TARGET=./python+build \ No newline at end of file + DO --pass-args common+BUILD_MULTIPLATFORM --TARGET=./python+build \ No newline at end of file diff --git a/containers/xep-python-iac/Earthfile b/containers/xep-python-iac/Earthfile index a1b02f2..70dab53 100644 --- a/containers/xep-python-iac/Earthfile +++ b/containers/xep-python-iac/Earthfile @@ -54,4 +54,4 @@ build: DO common+SAVE_IMAGE --IMAGE_NAME=xep-python-iac --TAG=${TAG} --GITHUB_REPOSITORY_OWNER=${GITHUB_REPOSITORY_OWNER} build-multiplatform: - DO common+BUILD_MULTIPLATFORM --TARGET=./python+build + DO --pass-args common+BUILD_MULTIPLATFORM --TARGET=./xep-python-iac+build diff --git a/containers/xep-python-iac/README.md b/containers/xep-python-iac/README.md index 58bfb4a..31af977 100644 --- a/containers/xep-python-iac/README.md +++ b/containers/xep-python-iac/README.md @@ -1,4 +1,4 @@ -# python +# XEP-Python-IaC Python container with IAC tooling (Poetry, pre-commit, OpenTofu, TFLint). From fd174c657f2f230ea10f04fad7239491108190e6 Mon Sep 17 00:00:00 2001 From: Hailemichael Atrsaw Date: Tue, 24 Mar 2026 16:45:41 +0300 Subject: [PATCH 23/24] fix: update base version to 27-dind in README and versions.yaml --- containers/docker/README.md | 6 +++--- containers/docker/versions.yaml | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/containers/docker/README.md b/containers/docker/README.md index 666baae..565c261 100644 --- a/containers/docker/README.md +++ b/containers/docker/README.md @@ -6,9 +6,9 @@ Aliased container image for Docker-in-Docker (dind) with buildx and additional t -| Tag | Base Version | -| ---- | ------------ | -| `27` | 27 | +| Tag | Base Version | +| --------- | ------------ | +| `27-dind` | 27-dind | diff --git a/containers/docker/versions.yaml b/containers/docker/versions.yaml index aacc46c..35fd495 100644 --- a/containers/docker/versions.yaml +++ b/containers/docker/versions.yaml @@ -1,9 +1,9 @@ image_name: docker tag_pattern: "{base_version}" versions: - - base_version: "27" + - base_version: "27-dind" watch: - - pattern: ^\d+$ + - pattern: ^\d+-dind$ source: docker.io/library/docker target: base_version type: docker From c4c2dd9da7d1e6614f91f238aea19cb08efdba3f Mon Sep 17 00:00:00 2001 From: Hailemichael Atrsaw Date: Tue, 24 Mar 2026 16:49:19 +0300 Subject: [PATCH 24/24] fix: correct BASE_VERSION usage in docker-base and add space in php Earthfile --- containers/docker/Earthfile | 2 +- containers/php/Earthfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/containers/docker/Earthfile b/containers/docker/Earthfile index eb30d1e..8304453 100644 --- a/containers/docker/Earthfile +++ b/containers/docker/Earthfile @@ -7,7 +7,7 @@ ARG --global GITHUB_REPOSITORY_OWNER docker-base: ARG BUILDX_VERSION=v0.20.1 - FROM docker.io/docker:${BASE_VERSION}-dind + FROM docker.io/docker:${BASE_VERSION} RUN apk add --no-cache \ parallel \ kubectl \ diff --git a/containers/php/Earthfile b/containers/php/Earthfile index a89a955..fcecb0a 100644 --- a/containers/php/Earthfile +++ b/containers/php/Earthfile @@ -19,4 +19,4 @@ build: DO common+SAVE_IMAGE --IMAGE_NAME=php --TAG=${TAG} --GITHUB_REPOSITORY_OWNER=${GITHUB_REPOSITORY_OWNER} build-multiplatform: - DO --pass-argscommon+BUILD_MULTIPLATFORM --TARGET=./php+build + DO --pass-args common+BUILD_MULTIPLATFORM --TARGET=./php+build