Skip to content

Add official Apache Thrift image#21530

Open
kpumuk wants to merge 1 commit into
docker-library:masterfrom
kpumuk:thrift
Open

Add official Apache Thrift image#21530
kpumuk wants to merge 1 commit into
docker-library:masterfrom
kpumuk:thrift

Conversation

@kpumuk

@kpumuk kpumuk commented May 25, 2026

Copy link
Copy Markdown

Apache Thrift "official" images has been deprecated and then removed from the repository. This pull request aims to restore them.

In the apache/thrift#3421 we have introduced automation to generate the definitions, and moved dockerfiles to the Thrift monorepo.

@kpumuk kpumuk requested a review from a team as a code owner May 25, 2026 18:06
@kpumuk kpumuk changed the title Add official Thrift image Add official Apache Thrift image May 25, 2026
@kpumuk kpumuk marked this pull request as draft May 25, 2026 18:08
@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@kpumuk kpumuk marked this pull request as ready for review May 25, 2026 19:53
@github-actions

github-actions Bot commented Jun 3, 2026

Copy link
Copy Markdown
Diff for fefd382:
diff --git a/_bashbrew-arches b/_bashbrew-arches
index 8b13789..e85a97f 100644
--- a/_bashbrew-arches
+++ b/_bashbrew-arches
@@ -1 +1,2 @@
-
+amd64
+arm64v8
diff --git a/_bashbrew-cat b/_bashbrew-cat
index bdfae4a..08ef10b 100644
--- a/_bashbrew-cat
+++ b/_bashbrew-cat
@@ -1 +1,24 @@
-Maintainers: New Image! :D (@docker-library-bot)
+Maintainers: Apache Thrift Developers <dev@thrift.apache.org> (@asfbot), Jens Geyer (@Jens-G), Randy Abernethy (@RandyAbernethy), Duru Can Celasun (@dcelasun)
+GitRepo: https://github.com/apache/thrift.git
+
+Tags: 0.22.0, 0.22, 0.22.0-trixie, 0.22-trixie
+Architectures: amd64, arm64v8
+GitCommit: 027e3762b09d2174ebe6aa021f2ad1ca0774f07e
+Directory: docker/0.22.0
+
+Tags: 0.22.0-alpine3.23, 0.22-alpine3.23, 0.22.0-alpine, 0.22-alpine
+Architectures: amd64, arm64v8
+GitCommit: 027e3762b09d2174ebe6aa021f2ad1ca0774f07e
+Directory: docker/0.22.0
+File: Dockerfile.alpine
+
+Tags: 0.23.0, 0.23, latest, 0.23.0-trixie, 0.23-trixie, trixie
+Architectures: amd64, arm64v8
+GitCommit: 027e3762b09d2174ebe6aa021f2ad1ca0774f07e
+Directory: docker/0.23.0
+
+Tags: 0.23.0-alpine3.23, 0.23-alpine3.23, alpine3.23, 0.23.0-alpine, 0.23-alpine, alpine
+Architectures: amd64, arm64v8
+GitCommit: 027e3762b09d2174ebe6aa021f2ad1ca0774f07e
+Directory: docker/0.23.0
+File: Dockerfile.alpine
diff --git a/_bashbrew-list b/_bashbrew-list
index e69de29..5fcf280 100644
--- a/_bashbrew-list
+++ b/_bashbrew-list
@@ -0,0 +1,20 @@
+thrift:0.22
+thrift:0.22-alpine
+thrift:0.22-alpine3.23
+thrift:0.22-trixie
+thrift:0.22.0
+thrift:0.22.0-alpine
+thrift:0.22.0-alpine3.23
+thrift:0.22.0-trixie
+thrift:0.23
+thrift:0.23-alpine
+thrift:0.23-alpine3.23
+thrift:0.23-trixie
+thrift:0.23.0
+thrift:0.23.0-alpine
+thrift:0.23.0-alpine3.23
+thrift:0.23.0-trixie
+thrift:alpine
+thrift:alpine3.23
+thrift:latest
+thrift:trixie
diff --git a/_bashbrew-list-build-order b/_bashbrew-list-build-order
index e69de29..a14f3f5 100644
--- a/_bashbrew-list-build-order
+++ b/_bashbrew-list-build-order
@@ -0,0 +1,4 @@
+thrift:0.22-alpine
+thrift:0.22-trixie
+thrift:alpine
+thrift:trixie
diff --git a/thrift_0.22-alpine/Dockerfile.alpine b/thrift_0.22-alpine/Dockerfile.alpine
new file mode 100644
index 0000000..8d99613
--- /dev/null
+++ b/thrift_0.22-alpine/Dockerfile.alpine
@@ -0,0 +1,74 @@
+FROM alpine:3.23 AS builder
+
+ARG THRIFT_VERSION=0.22.0
+ARG THRIFT_SOURCE_URL=https://archive.apache.org/dist/thrift/0.22.0/thrift-0.22.0.tar.gz
+ARG THRIFT_SOURCE_SHA256=794a0e455787960d9f27ab92c38e34da27e8deeda7a5db0e59dc64a00df8a1e5
+ARG THRIFT_SOURCE_SIGNER=8CD87F186F06E958EFCA963D76BD340FC4B75865
+
+RUN set -eux; \
+	apk add --no-cache \
+		bison \
+		build-base \
+		ca-certificates \
+		cmake \
+		curl \
+		flex \
+		gnupg \
+	; \
+	update-ca-certificates
+
+WORKDIR /usr/src
+
+RUN set -eux; \
+	curl -fsSL -o thrift.tar.gz "$THRIFT_SOURCE_URL"; \
+	curl -fsSL -o thrift.tar.gz.asc "$THRIFT_SOURCE_URL.asc"; \
+	curl -fsSL -o thrift-KEYS https://downloads.apache.org/thrift/KEYS; \
+	echo "$THRIFT_SOURCE_SHA256 *thrift.tar.gz" | sha256sum -c -; \
+	export GNUPGHOME="$(mktemp -d)"; \
+	gpg --batch --import thrift-KEYS; \
+	gpg --batch --status-fd 1 --verify thrift.tar.gz.asc thrift.tar.gz > gpg.status; \
+	grep -F "[GNUPG:] VALIDSIG $THRIFT_SOURCE_SIGNER " gpg.status; \
+	gpgconf --kill all; \
+	rm -rf "$GNUPGHOME"; \
+	mkdir thrift; \
+	tar -xzf thrift.tar.gz -C thrift --strip-components=1; \
+	rm thrift.tar.gz thrift.tar.gz.asc thrift-KEYS gpg.status
+
+RUN set -eux; \
+	cmake -S thrift -B build \
+		-DCMAKE_BUILD_TYPE=Release \
+		-DBUILD_COMPILER=ON \
+		-DBUILD_LIBRARIES=OFF \
+		-DBUILD_TESTING=OFF \
+		-DBUILD_TUTORIALS=OFF; \
+	cmake --build build --target thrift-compiler -j "$(nproc)"; \
+	cmake --install build --prefix /opt/thrift
+
+FROM alpine:3.23
+
+ARG THRIFT_VERSION=0.22.0
+
+LABEL org.opencontainers.image.title="Apache Thrift Compiler" \
+	org.opencontainers.image.version="$THRIFT_VERSION" \
+	org.opencontainers.image.source="https://github.com/apache/thrift" \
+	org.opencontainers.image.url="https://thrift.apache.org/" \
+	org.opencontainers.image.licenses="Apache-2.0"
+
+RUN set -eux; \
+	apk add --no-cache libstdc++
+
+COPY --from=builder /opt/thrift/bin/thrift /usr/local/bin/thrift
+COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh
+
+RUN set -eux; \
+	thrift --version | grep -F "$THRIFT_VERSION"; \
+	echo 'struct Ping { 1: string message }' > /tmp/smoke.thrift; \
+	mkdir -p /tmp/smoke-out; \
+	thrift --gen json -o /tmp/smoke-out /tmp/smoke.thrift; \
+	find /tmp/smoke-out -type f | grep -q .; \
+	rm -rf /tmp/smoke.thrift /tmp/smoke-out
+
+WORKDIR /data
+
+ENTRYPOINT ["docker-entrypoint.sh"]
+CMD ["thrift"]
diff --git a/thrift_0.22-alpine/docker-entrypoint.sh b/thrift_0.22-alpine/docker-entrypoint.sh
new file mode 100755
index 0000000..ac3ccae
--- /dev/null
+++ b/thrift_0.22-alpine/docker-entrypoint.sh
@@ -0,0 +1,10 @@
+#!/bin/sh
+set -e
+
+if [ "$#" -eq 0 ]; then
+	set -- thrift
+elif [ "${1#-}" != "$1" ]; then
+	set -- thrift "$@"
+fi
+
+exec "$@"
diff --git a/thrift_0.22-trixie/Dockerfile b/thrift_0.22-trixie/Dockerfile
new file mode 100644
index 0000000..df2e58a
--- /dev/null
+++ b/thrift_0.22-trixie/Dockerfile
@@ -0,0 +1,78 @@
+FROM debian:trixie AS builder
+
+ARG THRIFT_VERSION=0.22.0
+ARG THRIFT_SOURCE_URL=https://archive.apache.org/dist/thrift/0.22.0/thrift-0.22.0.tar.gz
+ARG THRIFT_SOURCE_SHA256=794a0e455787960d9f27ab92c38e34da27e8deeda7a5db0e59dc64a00df8a1e5
+ARG THRIFT_SOURCE_SIGNER=8CD87F186F06E958EFCA963D76BD340FC4B75865
+
+RUN set -eux; \
+	apt-get update; \
+	apt-get install -y --no-install-recommends \
+		bison \
+		ca-certificates \
+		cmake \
+		curl \
+		flex \
+		g++ \
+		gnupg \
+		make \
+	; \
+	rm -rf /var/lib/apt/lists/*
+
+WORKDIR /usr/src
+
+RUN set -eux; \
+	curl -fsSL -o thrift.tar.gz "$THRIFT_SOURCE_URL"; \
+	curl -fsSL -o thrift.tar.gz.asc "$THRIFT_SOURCE_URL.asc"; \
+	curl -fsSL -o thrift-KEYS https://downloads.apache.org/thrift/KEYS; \
+	echo "$THRIFT_SOURCE_SHA256 *thrift.tar.gz" | sha256sum -c -; \
+	export GNUPGHOME="$(mktemp -d)"; \
+	gpg --batch --import thrift-KEYS; \
+	gpg --batch --status-fd 1 --verify thrift.tar.gz.asc thrift.tar.gz > gpg.status; \
+	grep -F "[GNUPG:] VALIDSIG $THRIFT_SOURCE_SIGNER " gpg.status; \
+	gpgconf --kill all; \
+	rm -rf "$GNUPGHOME"; \
+	mkdir thrift; \
+	tar -xzf thrift.tar.gz -C thrift --strip-components=1; \
+	rm thrift.tar.gz thrift.tar.gz.asc thrift-KEYS gpg.status
+
+RUN set -eux; \
+	cmake -S thrift -B build \
+		-DCMAKE_BUILD_TYPE=Release \
+		-DBUILD_COMPILER=ON \
+		-DBUILD_LIBRARIES=OFF \
+		-DBUILD_TESTING=OFF \
+		-DBUILD_TUTORIALS=OFF; \
+	cmake --build build --target thrift-compiler -j "$(nproc)"; \
+	cmake --install build --prefix /opt/thrift
+
+FROM debian:trixie-slim
+
+ARG THRIFT_VERSION=0.22.0
+
+LABEL org.opencontainers.image.title="Apache Thrift Compiler" \
+	org.opencontainers.image.version="$THRIFT_VERSION" \
+	org.opencontainers.image.source="https://github.com/apache/thrift" \
+	org.opencontainers.image.url="https://thrift.apache.org/" \
+	org.opencontainers.image.licenses="Apache-2.0"
+
+RUN set -eux; \
+	apt-get update; \
+	apt-get install -y --no-install-recommends libstdc++6; \
+	rm -rf /var/lib/apt/lists/*
+
+COPY --from=builder /opt/thrift/bin/thrift /usr/local/bin/thrift
+COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh
+
+RUN set -eux; \
+	thrift --version | grep -F "$THRIFT_VERSION"; \
+	echo 'struct Ping { 1: string message }' > /tmp/smoke.thrift; \
+	mkdir -p /tmp/smoke-out; \
+	thrift --gen json -o /tmp/smoke-out /tmp/smoke.thrift; \
+	find /tmp/smoke-out -type f | grep -q .; \
+	rm -rf /tmp/smoke.thrift /tmp/smoke-out
+
+WORKDIR /data
+
+ENTRYPOINT ["docker-entrypoint.sh"]
+CMD ["thrift"]
diff --git a/thrift_0.22-trixie/docker-entrypoint.sh b/thrift_0.22-trixie/docker-entrypoint.sh
new file mode 100755
index 0000000..ac3ccae
--- /dev/null
+++ b/thrift_0.22-trixie/docker-entrypoint.sh
@@ -0,0 +1,10 @@
+#!/bin/sh
+set -e
+
+if [ "$#" -eq 0 ]; then
+	set -- thrift
+elif [ "${1#-}" != "$1" ]; then
+	set -- thrift "$@"
+fi
+
+exec "$@"
diff --git a/thrift_alpine/Dockerfile.alpine b/thrift_alpine/Dockerfile.alpine
new file mode 100644
index 0000000..f5efcbf
--- /dev/null
+++ b/thrift_alpine/Dockerfile.alpine
@@ -0,0 +1,74 @@
+FROM alpine:3.23 AS builder
+
+ARG THRIFT_VERSION=0.23.0
+ARG THRIFT_SOURCE_URL=https://archive.apache.org/dist/thrift/0.23.0/thrift-0.23.0.tar.gz
+ARG THRIFT_SOURCE_SHA256=1859d932d2ae1f13d16c5a196931208c116310a5ff50f2bfd11d3db03be8f46f
+ARG THRIFT_SOURCE_SIGNER=8CD87F186F06E958EFCA963D76BD340FC4B75865
+
+RUN set -eux; \
+	apk add --no-cache \
+		bison \
+		build-base \
+		ca-certificates \
+		cmake \
+		curl \
+		flex \
+		gnupg \
+	; \
+	update-ca-certificates
+
+WORKDIR /usr/src
+
+RUN set -eux; \
+	curl -fsSL -o thrift.tar.gz "$THRIFT_SOURCE_URL"; \
+	curl -fsSL -o thrift.tar.gz.asc "$THRIFT_SOURCE_URL.asc"; \
+	curl -fsSL -o thrift-KEYS https://downloads.apache.org/thrift/KEYS; \
+	echo "$THRIFT_SOURCE_SHA256 *thrift.tar.gz" | sha256sum -c -; \
+	export GNUPGHOME="$(mktemp -d)"; \
+	gpg --batch --import thrift-KEYS; \
+	gpg --batch --status-fd 1 --verify thrift.tar.gz.asc thrift.tar.gz > gpg.status; \
+	grep -F "[GNUPG:] VALIDSIG $THRIFT_SOURCE_SIGNER " gpg.status; \
+	gpgconf --kill all; \
+	rm -rf "$GNUPGHOME"; \
+	mkdir thrift; \
+	tar -xzf thrift.tar.gz -C thrift --strip-components=1; \
+	rm thrift.tar.gz thrift.tar.gz.asc thrift-KEYS gpg.status
+
+RUN set -eux; \
+	cmake -S thrift -B build \
+		-DCMAKE_BUILD_TYPE=Release \
+		-DBUILD_COMPILER=ON \
+		-DBUILD_LIBRARIES=OFF \
+		-DBUILD_TESTING=OFF \
+		-DBUILD_TUTORIALS=OFF; \
+	cmake --build build --target thrift-compiler -j "$(nproc)"; \
+	cmake --install build --prefix /opt/thrift
+
+FROM alpine:3.23
+
+ARG THRIFT_VERSION=0.23.0
+
+LABEL org.opencontainers.image.title="Apache Thrift Compiler" \
+	org.opencontainers.image.version="$THRIFT_VERSION" \
+	org.opencontainers.image.source="https://github.com/apache/thrift" \
+	org.opencontainers.image.url="https://thrift.apache.org/" \
+	org.opencontainers.image.licenses="Apache-2.0"
+
+RUN set -eux; \
+	apk add --no-cache libstdc++
+
+COPY --from=builder /opt/thrift/bin/thrift /usr/local/bin/thrift
+COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh
+
+RUN set -eux; \
+	thrift --version | grep -F "$THRIFT_VERSION"; \
+	echo 'struct Ping { 1: string message }' > /tmp/smoke.thrift; \
+	mkdir -p /tmp/smoke-out; \
+	thrift --gen json -o /tmp/smoke-out /tmp/smoke.thrift; \
+	find /tmp/smoke-out -type f | grep -q .; \
+	rm -rf /tmp/smoke.thrift /tmp/smoke-out
+
+WORKDIR /data
+
+ENTRYPOINT ["docker-entrypoint.sh"]
+CMD ["thrift"]
diff --git a/thrift_alpine/docker-entrypoint.sh b/thrift_alpine/docker-entrypoint.sh
new file mode 100755
index 0000000..ac3ccae
--- /dev/null
+++ b/thrift_alpine/docker-entrypoint.sh
@@ -0,0 +1,10 @@
+#!/bin/sh
+set -e
+
+if [ "$#" -eq 0 ]; then
+	set -- thrift
+elif [ "${1#-}" != "$1" ]; then
+	set -- thrift "$@"
+fi
+
+exec "$@"
diff --git a/thrift_trixie/Dockerfile b/thrift_trixie/Dockerfile
new file mode 100644
index 0000000..33e4ddd
--- /dev/null
+++ b/thrift_trixie/Dockerfile
@@ -0,0 +1,78 @@
+FROM debian:trixie AS builder
+
+ARG THRIFT_VERSION=0.23.0
+ARG THRIFT_SOURCE_URL=https://archive.apache.org/dist/thrift/0.23.0/thrift-0.23.0.tar.gz
+ARG THRIFT_SOURCE_SHA256=1859d932d2ae1f13d16c5a196931208c116310a5ff50f2bfd11d3db03be8f46f
+ARG THRIFT_SOURCE_SIGNER=8CD87F186F06E958EFCA963D76BD340FC4B75865
+
+RUN set -eux; \
+	apt-get update; \
+	apt-get install -y --no-install-recommends \
+		bison \
+		ca-certificates \
+		cmake \
+		curl \
+		flex \
+		g++ \
+		gnupg \
+		make \
+	; \
+	rm -rf /var/lib/apt/lists/*
+
+WORKDIR /usr/src
+
+RUN set -eux; \
+	curl -fsSL -o thrift.tar.gz "$THRIFT_SOURCE_URL"; \
+	curl -fsSL -o thrift.tar.gz.asc "$THRIFT_SOURCE_URL.asc"; \
+	curl -fsSL -o thrift-KEYS https://downloads.apache.org/thrift/KEYS; \
+	echo "$THRIFT_SOURCE_SHA256 *thrift.tar.gz" | sha256sum -c -; \
+	export GNUPGHOME="$(mktemp -d)"; \
+	gpg --batch --import thrift-KEYS; \
+	gpg --batch --status-fd 1 --verify thrift.tar.gz.asc thrift.tar.gz > gpg.status; \
+	grep -F "[GNUPG:] VALIDSIG $THRIFT_SOURCE_SIGNER " gpg.status; \
+	gpgconf --kill all; \
+	rm -rf "$GNUPGHOME"; \
+	mkdir thrift; \
+	tar -xzf thrift.tar.gz -C thrift --strip-components=1; \
+	rm thrift.tar.gz thrift.tar.gz.asc thrift-KEYS gpg.status
+
+RUN set -eux; \
+	cmake -S thrift -B build \
+		-DCMAKE_BUILD_TYPE=Release \
+		-DBUILD_COMPILER=ON \
+		-DBUILD_LIBRARIES=OFF \
+		-DBUILD_TESTING=OFF \
+		-DBUILD_TUTORIALS=OFF; \
+	cmake --build build --target thrift-compiler -j "$(nproc)"; \
+	cmake --install build --prefix /opt/thrift
+
+FROM debian:trixie-slim
+
+ARG THRIFT_VERSION=0.23.0
+
+LABEL org.opencontainers.image.title="Apache Thrift Compiler" \
+	org.opencontainers.image.version="$THRIFT_VERSION" \
+	org.opencontainers.image.source="https://github.com/apache/thrift" \
+	org.opencontainers.image.url="https://thrift.apache.org/" \
+	org.opencontainers.image.licenses="Apache-2.0"
+
+RUN set -eux; \
+	apt-get update; \
+	apt-get install -y --no-install-recommends libstdc++6; \
+	rm -rf /var/lib/apt/lists/*
+
+COPY --from=builder /opt/thrift/bin/thrift /usr/local/bin/thrift
+COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh
+
+RUN set -eux; \
+	thrift --version | grep -F "$THRIFT_VERSION"; \
+	echo 'struct Ping { 1: string message }' > /tmp/smoke.thrift; \
+	mkdir -p /tmp/smoke-out; \
+	thrift --gen json -o /tmp/smoke-out /tmp/smoke.thrift; \
+	find /tmp/smoke-out -type f | grep -q .; \
+	rm -rf /tmp/smoke.thrift /tmp/smoke-out
+
+WORKDIR /data
+
+ENTRYPOINT ["docker-entrypoint.sh"]
+CMD ["thrift"]
diff --git a/thrift_trixie/docker-entrypoint.sh b/thrift_trixie/docker-entrypoint.sh
new file mode 100755
index 0000000..ac3ccae
--- /dev/null
+++ b/thrift_trixie/docker-entrypoint.sh
@@ -0,0 +1,10 @@
+#!/bin/sh
+set -e
+
+if [ "$#" -eq 0 ]; then
+	set -- thrift
+elif [ "${1#-}" != "$1" ]; then
+	set -- thrift "$@"
+fi
+
+exec "$@"

@kpumuk

kpumuk commented Jun 3, 2026

Copy link
Copy Markdown
Author

Moved docker-entrypoint.sh to the respective version directories, so there is not accessing files outside of context.

@kpumuk

kpumuk commented Jul 5, 2026

Copy link
Copy Markdown
Author

@tianon is it possible to re-approve CI run again, please?

@tianon tianon closed this Jul 6, 2026
@tianon tianon reopened this Jul 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants