— docker — 1 min read
Building and deploying docker container image from Apple Mac M1 runs into error.
1Error Validation failed: Image must be amd64 architecture for linux us
fly.io runs on AMD architecture. Mac M1 is ARM. I initially resolved it by using Github action to build the container, but in case you
want to build it on your M1 and put it up in container registry, you could use
buildx, following 3 commands did the trick for me.
1docker buildx create --name mybuilder2docker buildx use mybuilder3docker buildx build --platform linux/amd64 -t ch4nd4n/homechef-menu:amd -f Dockerfile.menu --push .
While starting off with fly.io, the first tutorial worked fine, but I ran into issue when I tried the Node.js example given on the website. fly.io is a platform that let's you deploy your web applications(something like that). I believe it has to do something with Apple M1 chip. Over a period of time I figured that Apple M1 is kind of pain, especially when working with Docker/Kubernetes etc.
The error looked like
1#2# Fatal process OOM in Failed to reserve virtual memory for CodeRange3#45qemu: uncaught target signal 5 (Trace/breakpoint trap) - core dumped6ERROR: failed to build: exit status 133
A quick Google search did not help me much, but Docker has been a pain on M1, although to be fair, it's not really ARM fault, but x86 is more prominently used.
Having no access to AMD/X86 I took a different path, I used Github Action to build it. If you care to read more, refer to the documents below. The code is just a simple fastify containerized. To create x86 package I used Github Action and published the content to Github packages.
Last step was to update the fly.toml file with something like
1[build]2 image = "ghcr.io/ch4nd4n/fastify-example:feature-dockerize"