Hello,
I made the switch recently from an x86 MacBook to Apple silicon (M3) and it seems to fail my Docker/Minikube workflow that perfectly worked under my old machine.
My app is a Phoenix app that is started in Minikube with a sidecar container (same pod) doing the migrations before the real app is started.
I’m using Elixir v1.15.7 with OTP v26.
FYI, the migrations are run in Dockerfile via
command: ['/home/elixir/app/bin/oss', 'eval', 'Oss.Migrator.migrate']
First thing, I found out there is no way to Docker build the app unless I add this ERL flag in the Dockerfile (as pointed out by Mix deps.get memory explosion when doing cross-platform Docker build]):
ENV ERL_FLAGS="+JPperf true"
or
ENV ERL_FLAGS="+JMsingle true"
I also had to use docker build --platform linux/amd64 to make it work in Minikube.
Then the rest of it:
- Run Docker Desktop.
- Start Minikube with
minikube start --extra-config=apiserver.service-node-port-range=1-50000 --memory=6g --cpus=4 --kubernetes-version=v1.22.15 --cni=calico --driver=docker
-
Docker build
-
Run the app in Minikube (via terraform apply), which causes this weird error while doing the migrations:
** (ArgumentError) could not call Module.put_attribute/3 because the module Oss.Repo.Migrations.CreatePopsTable is already compiled │
│ (elixir 1.15.7) lib/module.ex:2310: Module.assert_not_readonly!/2 │
│ (elixir 1.15.7) lib/module.ex:2007: Module.__put_attribute__/5 │
│ lib/oss-1.14.0/priv/repo/migrations/20210000000300_create_pois_table.exs:2: (module)
This error makes absolutely no sense to me, especially because it does not occur with my x86 MacBook.
If you think of anything I could try to sort this out, I’d be grateful for that
.






















