Skip to content

Add multi-architecture Docker image builds using Docker Buildx #2403

Description

@AnzalKhan16

Is your feature request related to a problem?

The project currently supports Docker-based containerization, but Docker images are built for a single architecture by default. As ARM-based systems such as Apple Silicon, Raspberry Pi, and ARM cloud instances become more common, users may encounter compatibility issues when attempting to run the published container images.

Proposed Solution

Enhance the existing Docker build workflow by integrating Docker Buildx to support multi-architecture image builds.

The workflow should:

  • Set up Docker Buildx in GitHub Actions.
  • Build images for both linux/amd64 and linux/arm64.
  • Publish a multi-architecture image manifest to the container registry.
  • Tag images consistently using latest, commit SHA, and release versions where applicable.
  • Leverage Docker layer caching to improve build performance.
  • Verify that images for both architectures are successfully built before publishing.

This will ensure the project's container images are compatible with a wider range of development and production environments.

Alternatives Considered

An alternative is to build and publish separate Docker images for each architecture manually. While this approach works, it increases maintenance effort, complicates the release process, and requires users to select the appropriate image themselves. Multi-architecture images provide a seamless experience by automatically delivering the correct image for the user's platform.

Additional Context

Multi-architecture Docker images have become a standard practice in modern containerized applications. Supporting both AMD64 and ARM64 improves portability across cloud providers, development machines, and edge devices while making the project more accessible to a broader community of users.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions