Apple's M1 Mac Notes - TISTATechnologies/caseflow GitHub Wiki
It doesn't appear to be possible to run the entirety of Caseflow locally on Macs with the new M1 chip. This is due to Caseflow's dependency on Oracle. Although it is containerized, the Docker image Oracle provides is incompatible with M1 silicon. Oracle developers have provided an official comment on the issue:
Should Oracle actually work in a Docker container on M1-silicon when using buildx on arm platform?
No. Oracle Database will currently not work on an M1-silicon based Mac, due to the limitations of emulating the x86 instruction set on Arm.
Is this now regarded as a bug in the database?
No, it is not.
Is someone actively working on this?
Specifically on getting Oracle Database to work in a Docker container on an M1-based Mac? No. On the concept of the Oracle Database running in some way on 64-bit Arm processors? Probably.
There is no known timeline for when Oracle plans to release an M1-compatible Docker image. For further explanation, see this thread. It may be worth following this thread for future updates.
Alternatives
Although running the (containerized) Oracle dependency locally on M1 Macs is not possible, it may still be possible to run most of Caseflow locally. Future developers who wish to develop Caseflow on M1 Macs might consider running an Oracle database on an individual development server accessible through HTTP. The Rails setup could be configured to point to this database instead.
Getting setup most of the way
Emulating i386 using Rosetta
The easiest way to install most of Caseflow's dependencies is to run the terminal program in Rosetta:
- Open the folder containing the terminal application
- Right-click and hit "Get Info"
- Check the box next to "Open using Rosetta"
To check that this worked, run arch
in your terminal. You should see i386
.
One thing to consider is that this may lead to some performance overhead. You may consider creating a copy of your terminal program: one that defaults to Rosetta, one that uses arm64.
Other dependencies
There may be some hiccups with a few Ruby gems along the way, particularly with ruby-oci8
.