Configuring a CircleCI pipeline that builds a multi-architecture Docker image that runs on an Arm-based Apple M1 MacBook
Recently, I was excited to buy an Apple M1 MacBook: lots of cores and memory. I couldn’t wait to start using it for development so I tried running the Eventuate Tram Customers and Orders example application, which illustrates how to use the Sagas and CQRS patterns to implement operations that span multiple services. Sadly, running this application on my shiny new MacBook wasn’t straightforward due to problems running Docker containers.
In this series of articles, I describe what I learned solving one of the problems with developing on Arm: building multi-architecture Docker images that support Intel and Arm. I show how I enhanced a simple projects that runs PlantUML, which is an incredibly useful UML diagramming tool, as a Docker container. The end result is a CircleCI pipeline that publishes a multi-architecture Docker image that runs on both Intel and Arm.
Here are the articles:
- Part 1 - My Apple M1 MacBook: lots of cores, memory and crashing containers
- Part 2 - Building multi-architecture Docker images for Intel and ARM
- Part 3 - Configuring a CircleCI-based pipeline to build multi-architecture Docker images
- Part 4 - Testing an Intel and Arm multi-architecture Docker image on CircleCI
- Part 5 - Configuring CircleCI to publish a multi-architecture Docker image
In later articles, I’ll describe enhancing the Eventuate platform to support Arm.