Docker images for ARM? RPI?

Hi guys,

Just wanted to ask anyone if they have any working ARM docker images for latest Crystal? I made one a while back and I haven’t been able to update it to the latest Crystal because I use the deb installer from 2016. I’d love for the Crystal team to release an official docker build for ARM. I am currently working on a Dockerfile for the new version using this article.

My old kemal image for ARM only.

1 Like

I was wondering what people do with docker files of the compiler.
If you need the compiler, you want to compile something, so why use a docker container and not install the compiler direclty?

Because I want to Dockerize it so I can run it in swarm mode, as well as make it easier to reinstall RPis that I have with Crystal. Look up what Docker does and you’ll understand why we need this. I’m not compiling Crystal from scratch every time I need a higher version.

I know what docker does, i used it before. But I was wondering why you would need the compiler itself on many instances, and not just have it on one system, where you compile the binary you then deploy?

edit: I have crystal on one PI and basically only change to a new compiler version when I do a new major release of our software so everything is thoroughly tested, and that does not happen very often.

Ok then you should understand why this would be useful. People build docker images, they will want to build docker images based off crystal. The literal draw of docker is “containerized development tools”. Naturally people will want the crystal compiler in a docker image. Some people don’t want to need to rebuild crystal for their platform from scratch when we can dockerize the whole process and make it way simpler for ARM users to use crystal.

I have this working locally on OSX.
Firstly build you docker image: https://github.com/spider-gazelle/spider-gazelle/blob/master/Dockerfile <-- this is our base build for microservices.

You want the image to be as small as possible as every arch you add multiplies the size of the image.
So x64 == 20mb, x64 + ARM7 is 40MB etc

You need to enable experimental docker features - you can do this in preferences

Then you can build multi-arch images super easy:

docker buildx build --platform linux/amd64,linux/arm64 -t org/image-name .
1 Like