Barış Kısır

Building Multi-Platform Docker Images (amd64 & arm64) the Right Way

05 Jun 2025

The Rise of Heterogeneous Infrastructure

With the proliferation of Apple Silicon (M-series) in development and cost-effective ARM-based instances (like AWS Graviton) in production, the ability to build and distribute multi-platform container images is no longer a luxury—it’s a necessity for modern CI/CD pipelines.

The Problem with docker build

A standard docker build creates an image for the architecture of the host machine. If you build an image on an Intel-based CI server, it will fail to launch on an ARM-based production cluster.

Introducing Docker Buildx

Docker Buildx is a specialized CLI plugin that extends the docker command with full support for multi-platform builds using BuildKit.

Implementation: The Unified Build Command

Using the --platform flag, you can orchestrate Docker to build for multiple architectures simultaneously and push them as a single Manifest List to your registry.

# Create a new builder instance with multi-arch support
docker buildx create --use --name multi-arch-builder

# Build and Push for both Intel (amd64) and ARM (arm64)
docker buildx build --platform linux/amd64,linux/arm64 \
  -t username/enterprise-app:v1.2 --push .

Orchestrating the Dockerfile for Multi-Arch

To ensure your Dockerfile is architecture-agnostic, rely on the official .NET images which provide multi-arch manifests out of the box.

# Docker automatically pulls the correct architecture for the 'sdk' tag
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY . .
RUN dotnet publish -c Release -o /app/out

# Final lightweight runtime image
FROM mcr.microsoft.com/dotnet/runtime:8.0
WORKDIR /app
COPY --from=build /app/out .
ENTRYPOINT ["dotnet", "App.dll"]

Strategic Advantages

  1. Cost Efficiency: ARM instances are typically 20-40% cheaper than equivalent x86 instances.
  2. Performance: ARM architectures often provide superior performance for specific workloads, such as cryptographic operations or high-concurrency microservices.
  3. Developer Experience: Ensures that developers on different hardware (Mac vs. Windows/Linux) are testing the exact same container manifest that will run in production.

The Advantage of Platform Agnostic Infrastructure

We are moving toward a world where the underlying CPU architecture should be an implementation detail, not a deployment blocker. By integrating Buildx and multi-arch manifests into your CI/CD pipeline, you empower your operations team to choose the most cost-effective or highest-performing hardware without requiring a single change to your application code. It’s about building once and knowing your software is ready for whatever infrastructure comes next.