Skip to content

Publish multi-platform Docker images (linux/amd64 + linux/arm64) #2425

Description

@ctrahey

The eclipsesyson/syson images on Docker Hub are published for linux/amd64 only. On arm64 hosts (Apple Silicon Macs, AWS Graviton, Ampere, etc.), docker compose up fails with no matching manifest for linux/arm64/v8, and the documented workaround (#991, installation-guide troubleshooting) is to force emulation with DOCKER_DEFAULT_PLATFORM=linux/amd64. Emulation works, but startup and modeling operations are noticeably slower, and it costs battery/CPU on developer laptops. Native images would benefit both Apple Silicon developers and arm64 cloud deployments.

Because the application jar is architecture-independent and is built outside Docker in CI, publishing multi-platform images only requires two small changes to the existing build.yml:

  1. Set up QEMU (docker/setup-qemu-action) before the existing Buildx setup.
  2. Add platforms: linux/amd64,linux/arm64 to the existing "Push Docker image" step.

The runtime Dockerfile needs no changes: eclipse-temurin:21-jre-alpine-3.20 is multi-arch, and the pinned nodejs/npm apk packages exist for both architectures. I validated this locally by running docker buildx build --platform linux/amd64,linux/arm64 against the unmodified backend/application/syson-application context — both platforms build cleanly, and the resulting arm64 image runs SysON natively (verified against the standard docker-compose setup).

The single-arch test image used by the Playwright/Cypress jobs is unaffected; only the push step becomes multi-platform.

With this in place, the Apple Silicon notes in the installation guide and the docker-compose.yml comments can be scoped to older releases.

I have the change ready and validated and will open a PR referencing this issue.

Metadata

Metadata

Assignees

Type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions