The Eventuate Tram Customers and Orders example now runs on Arm/M1 MacBook!!
multi-architecture docker images dockerA while back I described how the Eventuate Tram Customers and Orders example did not run on my shiny new M1 MacBook due to problems with flaky Intel-only Docker images. I’m super happy to announce that after updating several Eventuate projects, it now runs successfully. This post summaries the changes that I needed to make.
The other articles in this series are:
- 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
- Part 6 - Developing the Eventuate Common library on an M1/Arm MacBook
- Part 7 - Configuring CircleCI to build, test and publish multi-architecture images for Eventuate Common
- Part 8 - Building a multi-architecture Docker image for Apache Kafka
- Part 9 - Publishing multi-architecture base images for services
- Part 10 - Publishing a multi-architecture Docker image for the Eventuate CDC service
Updates to other Eventuate projects
First, I needed to change the following projects to publish multi-architecture Docker images:
- Eventuate Common - MySQL 8 and Apache Zookeeper
- Eventuate Messaging Kafka - Apache Kafka
- Eventuate CDC - Eventuate CDC service
- Eventuate Example base images - base image for Spring Boot-based service
Changed the Docker images used by Eventuate Tram Customers and Orders
Next, I updated Eventuate Tram Customers and Orders project to used the images published by these projects. Some images, such as the Eventuate CDC image, simply needed to be upgraded to the latest versions. Other images needed to be replaced with multi-architecture image. Specifically, I replaced the following Intel-specific images:
- Confluent platform Apache Kafka and Zookeeper images - replaced with Eventuate built images
- Eventuate MySQL 5 image - replaced with the the Eventuate MySQL 8
Enhanced the CircleCI pipeline to test on both Intel and Arm
Finally, I enhanced the CircleCI pipeline to run the MySQL 8 version of the tests on both Intel and Arm.
I replaced the old build-and-test-all-mysql-binlog
job with two new jobs: build-and-test-all-mysql-binlog-intel
and build-and-test-all-mysql-binlog-arm
.
Viewing the changes
To see these changes, please take a look at this Github commit.
What still needs to be done
There’s still more work to do. The project is still using Intel-only Postgres and MS SQL server images. However, after making these changes I now have a laptop that I can use for development.