Build multi-arch Docker images (amd64 + arm64)#5472
Conversation
Add linux/arm64 platform support to all Docker image build and update workflows. This produces manifest lists so that `docker pull` automatically selects the correct architecture. Changes: - Add QEMU setup step and a `platforms` input to both composite actions (docker_image_builder and docker_image_update) - Pass `platforms: linux/amd64,linux/arm64` for otobo-web, otobo-elasticsearch, otobo-nginx-webproxy, and otobo-nginx-kerberos-webproxy in all four workflows - Keep otobo-selenium-chrome as linux/amd64 only since the upstream selenium/standalone-chrome base image does not support arm64 - The Build step (with `load: true`) remains single-platform for the existing sanity check; only the Push step builds for all platforms Verified locally: both otobo-web and otobo-elasticsearch Dockerfiles build successfully for linux/arm64 on Apple Silicon (native arm64), including all Debian packages and CPAN module compilation.
|
Hi Franzisco, @flozano , thanks for your contribution. This looks very sane to me. We will discuss internally at Rother OSS whether we want this for the next patch level releases or possible only for the upcoming rel-11_1. Best regards, |
|
hi, thanks for considering it! |
v3 uses Node.js 20 which is deprecated on GitHub Actions runners (forced to Node.js 24 starting June 2, 2026).
CI test results: multi-arch build validatedRan a build-only test workflow on a fork (no push, no secrets needed) to verify all Docker images compile for both All 4 multi-arch images built successfully:
Notes:
|
|
Hi Francisco, as Bernhard mentioned, we are currently working on preparing 11.1 for release, we won't have the time to include this into the release though. At the same time, it is not really OTOBO functionality per se, anyways, so we are considering adding those images after 11.1 is done. Thanks for the contribution, Sven |
Summary
linux/arm64platform support to all Docker image build and update workflows, producing manifest lists sodocker pullautomatically selects the correct architectureplatformsinput to both composite actions (docker_image_builderanddocker_image_update)otobo-selenium-chromeaslinux/amd64only since the upstreamselenium/standalone-chromebase image does not publish arm64 variantsDetails
All base images already support arm64:
perl:5.40-bookwormelasticsearch:8.19.3nginx:mainline-trixiemariadb:lts-nobleredis:8-bookwormselenium/standalone-chromeThe existing Build step with
load: trueremains single-platform for the sanity check (docker runinspection). Only the Push step uses theplatformsinput to build and push for all specified architectures.6 files changed, 52 insertions added. No Dockerfiles were modified.
Test plan
otobo.web.dockerfilebuilds successfully forlinux/arm64(verified locally on Apple Silicon — all Debian packages install, all CPAN modules compile)otobo.elasticsearch.dockerfilebuilds successfully forlinux/arm64(verified locally — bothingest-attachmentandanalysis-icuplugins install)TARGETARCH, no hardcoded binary downloads)