Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Conversation

@amd989
Copy link
Contributor

@amd989 amd989 commented Oct 2, 2025

Add ARM32 (armv7) Multi-Architecture Docker Support

Summary

This PR adds ARM32 (armv7) architecture support to Fabio's Docker images and makes the build process fully multi-architecture aware. Docker images will now be built for three architectures: amd64, arm64, and armv7.

Changes Made

1. Updated Dockerfile

  • Made consul/vault binary downloads architecture-aware using ${TARGETARCH} variable
  • Downloads correct binaries for each target platform (amd64, arm64, arm)
  • Maintains original Dockerfile structure and test execution

2. Updated .goreleaser.yml

  • Added ARM32 (armv7) Docker build configuration
  • Creates multi-architecture manifests combining all three platforms:
    • fabiolb/fabio:latest → amd64, arm64v8, armv7
    • fabiolb/fabio:{{ .Version }} → amd64, arm64v8, armv7

3. Enhanced GitHub Actions Workflows

  • Added Docker Buildx setup to build workflow
  • Workflows now support building and pushing multi-arch images on release

Why This Matters

1. Broader Hardware Compatibility

  • Enables Fabio to run on ARM32 devices like Raspberry Pi 2/3/Zero 2
  • Supports older ARM-based servers and embedded systems
  • Expands deployment options for IoT and edge computing scenarios

2. Cost-Effective Edge Deployments

  • ARM32 devices are significantly cheaper than ARM64 or x86_64 alternatives
  • Perfect for home labs, small-scale deployments, and educational purposes
  • Reduces hardware costs for development and testing environments

3. Legacy Hardware Support

  • Extends the life of existing ARM32 infrastructure
  • No need to upgrade hardware to run modern Fabio versions
  • Supports organizations with investment in ARM32-based systems

4. Seamless User Experience

  • Docker automatically pulls the correct architecture image
  • No manual intervention required - just docker pull fabiolb/fabio:latest
  • Single manifest works across all platforms

5. Complete Platform Coverage

  • Covers the full spectrum of modern ARM devices (32-bit and 64-bit)
  • Matches the breadth of platforms already supported in binary releases
  • Ensures Docker deployment parity with standalone binary deployment options

Testing

The Docker build process has been tested for all three architectures:

docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 \
  -t fabiolb/fabio:latest --push .

All architectures build successfully with full test execution.

Breaking Changes

None. This is a purely additive change that expands platform support.

@amd989 amd989 requested a review from a team as a code owner October 2, 2025 17:26
Copy link
Contributor

@dcarbone dcarbone left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm, thanks!

@dcarbone dcarbone merged commit d4a112c into fabiolb:master Oct 2, 2025
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants