From baf7da3723925f2598fb61af6688f2a3ff1c27a7 Mon Sep 17 00:00:00 2001 From: macbre Date: Thu, 22 May 2025 18:24:44 +0100 Subject: [PATCH 1/4] Dockerfile: allow multiarch images (resolves #28) $ docker build --progress=plain --platform=linux/amd64,linux/aarch64 -t macbre/sphinx . --- Dockerfile | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index f076daa..dab0b23 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,8 +2,15 @@ # https://hub.docker.com/r/bitnami/minideb FROM bitnami/minideb:bookworm +# docker build --platform=linux/amd64,linux/aarch64 -t macbre/sphinx . +# amd64 / arm64 +# +# See https://www.docker.com/blog/faster-multi-platform-builds-dockerfile-cross-compilation-guide/ +ARG TARGETARCH + # https://sphinxsearch.com/blog/ ENV SPHINX_VERSION=3.8.1-d25e0bb +RUN bash -c 'echo "Preparing Sphinx v${SPHINX_VERSION} for ${TARGETARCH/arm64/aarch64} architecture ..."' # install dependencies RUN apt-get update \ @@ -19,7 +26,8 @@ VOLUME /opt/sphinx/indexes # https://sphinxsearch.com/files/sphinx-3.8.1-d25e0bb-linux-amd64-musl.tar.gz - Alpine # https://sphinxsearch.com/files/sphinx-3.8.1-d25e0bb-linux-amd64.tar.gz - Debian -RUN wget http://sphinxsearch.com/files/sphinx-${SPHINX_VERSION}-linux-amd64.tar.gz -O /tmp/sphinxsearch.tar.gz \ +# https://sphinxsearch.com/files/sphinx-3.8.1-d25e0bb-linux-aarch64.tar.gz - aarch64 +RUN bash -c 'wget http://sphinxsearch.com/files/sphinx-${SPHINX_VERSION}-linux-${TARGETARCH/arm64/aarch64}.tar.gz -O /tmp/sphinxsearch.tar.gz' \ && cd /opt/sphinx && tar -xf /tmp/sphinxsearch.tar.gz \ && rm /tmp/sphinxsearch.tar.gz From 09c1ab811f647e38b194e34c97c23f0fa1b6f5ca Mon Sep 17 00:00:00 2001 From: Maciej Brencz Date: Thu, 22 May 2025 18:28:22 +0100 Subject: [PATCH 2/4] dockerimage.yml: build for both amd64 and aarch64 --- .github/workflows/dockerimage.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/dockerimage.yml b/.github/workflows/dockerimage.yml index eb35715..c478c96 100644 --- a/.github/workflows/dockerimage.yml +++ b/.github/workflows/dockerimage.yml @@ -14,9 +14,9 @@ jobs: steps: - uses: actions/checkout@v2 - - name: Build the Docker image + - name: Build the Docker image for both amd64 and aarch64 (arm64/v8) run: | - docker build . --tag ${{ github.repository }} + docker build . --tag ${{ github.repository }} --platform=linux/amd64,linux/aarch64 docker images - name: Execute "indexer -v" From 2bc49eeb9f59050ec5daa65751d5adf03f2d5a80 Mon Sep 17 00:00:00 2001 From: Maciej Brencz Date: Thu, 22 May 2025 18:31:16 +0100 Subject: [PATCH 3/4] Set up the Docker multi-platform builder --- .github/workflows/dockerimage.yml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/dockerimage.yml b/.github/workflows/dockerimage.yml index c478c96..840c2bd 100644 --- a/.github/workflows/dockerimage.yml +++ b/.github/workflows/dockerimage.yml @@ -14,9 +14,17 @@ jobs: steps: - uses: actions/checkout@v2 + # https://docs.docker.com/build/building/multi-platform/#prerequisites + - name: Set up the Docker multi-platform builder + run: | + docker buildx create \ + --name container-builder \ + --driver docker-container \ + --bootstrap --use + - name: Build the Docker image for both amd64 and aarch64 (arm64/v8) run: | - docker build . --tag ${{ github.repository }} --platform=linux/amd64,linux/aarch64 + docker build . --tag ${{ github.repository }} --platform=linux/amd64,linux/aarch64 --load docker images - name: Execute "indexer -v" From 3526b3aa59ae01966216e9ef5db84d9fdddd2933 Mon Sep 17 00:00:00 2001 From: Maciej Brencz Date: Thu, 22 May 2025 18:39:18 +0100 Subject: [PATCH 4/4] Update dockerimage.yml: --output="type=image" --- .github/workflows/dockerimage.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dockerimage.yml b/.github/workflows/dockerimage.yml index 840c2bd..4c9b156 100644 --- a/.github/workflows/dockerimage.yml +++ b/.github/workflows/dockerimage.yml @@ -24,7 +24,7 @@ jobs: - name: Build the Docker image for both amd64 and aarch64 (arm64/v8) run: | - docker build . --tag ${{ github.repository }} --platform=linux/amd64,linux/aarch64 --load + docker build . --tag ${{ github.repository }} --platform=linux/amd64,linux/aarch64 --output="type=image" docker images - name: Execute "indexer -v"