Add docker images for ARM / aarch64
Is your feature request related to a problem? Please describe. I just discovered Checkmate, which looks really simple and great to have an overview of my servers status. However, I'd like to install it on a Raspberry Pi 5, which is unfortunately incompatible since it's not AMD64-based.
Describe the solution you'd like I think it would be nice to have a docker image that supports ARM architectures.
Describe alternatives you've considered I don't really see any alternatives other than installing Checkmate on an AMD64-based system.
Additional context This feature was already mentioned in the now-closed issues https://github.com/bluewave-labs/Checkmate/issues/1368 and https://github.com/bluewave-labs/Checkmate/issues/1386, so I'm opening a new one to keep this request visible.
Hey there,
So, I tried running Checkmate today on my ARM VPS using Portainer. The container shows as running, but nothing appears on the URL. When I checked the logs, I found the following:
exec /docker-entrypoint.sh: exec format error
exec /docker-entrypoint.sh: exec format error
exec /docker-entrypoint.sh: exec format error
exec /docker-entrypoint.sh: exec format error
exec /docker-entrypoint.sh: exec format error
exec /docker-entrypoint.sh: exec format error
exec /docker-entrypoint.sh: exec format error
exec /docker-entrypoint.sh: exec format error
exec /docker-entrypoint.sh: exec format error
exec /docker-entrypoint.sh: exec format error
At first, I thought I made a mistake, but when I checked the repo on Docker Hub, I realized there's no ARM version of the container. I figured I’d bring this up, just to see what the maintainers have to say about it.
After a bit of site browsing, I saw they had tested the ARM image, but I couldn't find the images anywhere to use. Hopefully, it becomes available soon.
Unfortunately there are several issues to run MongoDB on specific ARM architectures, discussed here. We tried it without luck for now, but if someone can make it work, we'd be happy to revisit this. Let's keep this issue open for future reference as well.
Unfortunately there are several issues to run MongoDB on specific ARM architectures, discussed here. We tried it without luck for now, but if someone can make it work, we'd be happy to revisit this. Let's keep this issue open for future reference as well.
If it’s just a MongoDB-related issue, then pretty please—at least consider building ARM-compatible images for the rest of the stack.
Many of us already run Mongo externally or use managed instances, so there's no hard dependency forcing Mongo to be bundled in the same container. Giving us a slim ARM build without Mongo would massively help the homelab and ARM crowd.
You’re locking out an entire segment of users just because one service isn’t ARM-ready. That’s like scrapping the whole meal because the dessert isn’t done. Please reconsider.
--by Chatgpt😅
you got me right, just build other images for arm, and make the stack useable with external mongodb instence. That's it,
please let me know if I'm wrong about anything of this Thank you.
You are not wrong ofc :) I am keeping this issue open, and have no intention to lock out an entire segment of users. That's why I said "We tried it without luck" - we have no will to discard the idea. :)
mongodb provides a linux/arm64/v8 docker container which works just fine on Raspberry Pi v4 and Apple's M-series hardware.
mongodb provides a
linux/arm64/v8docker container which works just fine on Raspberry Pi v4 and Apple's M-series hardware.
Woo @ajhollid ! This is a gem I assume :)
mongodb provides a
linux/arm64/v8docker container which works just fine on Raspberry Pi v4 and Apple's M-series hardware.Woo @ajhollid ! This is a gem I assume :)
i dont know but isnt that a arm supported mongodb server https://hub.docker.com/r/mongodb/mongodb-community-server/tags
I'm looking for ARM support here as well. Same use case: want to deploy to my raspberry pi
why not build multi arch docker image by default !!! i always build for multi arch and it's not particularly challenging.
Unfortunately there are several issues to run MongoDB on specific ARM architectures ??? i have 3 instances running on my arm64 based vps without issue , what am i missing?
why not build multi arch docker image by default !!! i always build for multi arch and it's not particularly challenging.
Unfortunately there are several issues to run MongoDB on specific ARM architectures ??? i have 3 instances running on my arm64 based vps without issue , what am i missing?
You are not missing anything. There are Docker images for this architecture and we are considering it.
+1 for arm support here.
@rhjensen79 @Hanibachi @rasouza @jnovack @renardspark Arm support is there for you to test guys. Let us know what you think!
https://docs.checkmate.so/checkmate-2.1/users-guide/quickstart
@gorkem-bwl which one is that ? The link for the Docker compose file on your quick start is not working, and browsing thru the repo, and trying one of the images in your docker files, gives me :
Status: Downloaded newer image for ghcr.io/bluewave-labs/checkmate:mongo-demo WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
So for now i would claim you still don't have arm support.
@rhjensen79 @Hanibachi @rasouza @jnovack @renardspark Arm support is there for you to test guys. Let us know what you think!
https://docs.checkmate.so/checkmate-2.1/users-guide/quickstart
For me the server does not start, docker shows it as active, but it does not generate any log or respond, it keeps giving bad gateway on the endpoints, the front is working fine
@rhjensen79 @Hanibachi @rasouza @jnovack @renardspark Arm support is there for you to test guys. Let us know what you think!
https://docs.checkmate.so/checkmate-2.1/users-guide/quickstart
Thank you @gorkem-bwl ! I just tried to launch it but I have the same error as @rhjensen79 (and same error as when creating this ticket) :
! redis The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
! mongodb The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
! server The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
! client The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
and then :
redis-1 | exec /usr/local/bin/docker-entrypoint.sh: exec format error
mongodb-1 | exec /usr/local/bin/docker-entrypoint.sh: exec format error
server-1 | exec /usr/local/bin/docker-entrypoint.sh: exec format error
client-1 | exec /docker-entrypoint.sh: exec format error
I also tried to pull one of the images directly while specifying the architecture, but it looks like the image still doesn't exist :
# docker pull --platform linux/arm64/v8 ghcr.io/bluewave-labs/checkmate:frontend-dist
frontend-dist: Pulling from bluewave-labs/checkmate
Digest: sha256:57e7b687c519d333f211f3aba402dd900a8484afcf827460d97f54e2580bbd08
Status: Image is up to date for ghcr.io/bluewave-labs/checkmate:frontend-dist
image with reference ghcr.io/bluewave-labs/checkmate:frontend-dist was found but its platform (linux/amd64) does not match the specified platform (linux/arm64/v8)
I don't know what you did (I'm only diagnosing from reading the comments), I believe you did not use docker buildx appropriately. If you are not an arm64 device, you must buildx as an arm64 device.
Thank you guys. Really appreciate the time you spent here. We found a Rpi5 and going to test on it directly.
I tried to install v2.1 with the quick start compose file in macOS via Orbstack (docker) and I get the flags of "amd64" images not being compatible.
Portainer is what I use to deploy compose files and the mongo one was marked as unhealthy.
I'll keep an eye open on this thread.
I'm a little stuck because we have our infrastructure runs ARM only. Would aoppreciate if more priority could be given to this issue. Thank you.
@zaakiy i hope you also clicked the sponsor link, before asking a OSS contributor that gives away free software, and their time, to prioritize your issue. If we want OSS to success, and we are not in a position to fix the problem our self, then sponsoring is a nice and decent way of keeping their support.
Hey @zaakiy ,
ARM support is indeed high on our list of priorities.
It shouldn't be an especially difficult issue, but as @rhjensen79 rightly noted our time is scarce and our resources not without limits.
We appreciate your support and use of the application, rest assured we will get to ARM support sooner rather than later.
See my workflow I have it running on arm64 in Oracle Cloud using my image
Hey @elibrody
That's great example for using docker buildx thank you. I think your workflow is running successfully but there is a problem in our app Dockerfile.
Error log in arm64 images:
1 warning found (use docker --debug to expand):
- JSONArgsRecommended: JSON arguments recommended for CMD to prevent unintended behavior related to OS signals (line 25)
server.Dockerfile:9
--------------------
7 |
8 | COPY client ./
9 | >>> RUN npm run build
10 |
11 | FROM node:20-alpine AS app
--------------------
ERROR: failed to solve: process "/bin/sh -c npm run build" did not complete successfully: exit code: 1
Error: buildx failed with: ERROR: failed to solve: process "/bin/sh -c npm run build" did not complete successfully: exit code: 1
I found a solution with specifying --platform=$BUILDPLATFORM to the parent(base) image.
FROM --platform=$BUILDPLATFORM node:20-alpine AS frontend-build
WORKDIR /app/client
COPY client/package*.json ./
RUN npm install
COPY client ./
RUN npm run build
FROM --platform=$BUILDPLATFORM node:20-alpine AS app
WORKDIR /app/server
COPY server ./
COPY --from=frontend-build /app/client/dist ./public
RUN npm install
RUN chmod +x ./scripts/inject-vars.sh
EXPOSE 52345
CMD ["sh", "-c", "./scripts/inject-vars.sh && node ./index.js"]
Final Command
docker buildx build --platform linux/amd64,linux/arm64 -t checkmate-multi-platform -f ./docker/dist-mono/server.Dockerfile .
Please let us know if it works for you.
Check my docker file under both Dist and mono (for mono I had to add an optional package to package.json for client)
Hi, just adding my voice that I'm looking forward to this too; I have Checkmate running in a linux OS but ideally I'd move it to my Raspberry Pi so that uptime is 100%.
When this feature is complete, how will we be notified? Will it be mentioned in the changelogs, or on the Readme.md? Just making sure I can catch the news when it happens so I'm ready to migrate!
@profucius You can join our Discord channel here: https://discord.com/invite/NAb6H3UTjK
Since a lot of people are waiting for this feature, I'll (at least) issue an announcement when it's ready and tag everyeone there - so you can be notified. Does that work for you?
Chances are Alex might issue another minor release for this purpose as well, but I am not sure about what he thinks or whether we'll go that way. But I'm so convinced to make sure everyone hears it promptly :)
Great! I’m looking forward to giving this a spin
To give everyone here a little update on this issue, the ARM support has been introduced in the release v2.1.1 with the docker image backend-dist-mono-multiarch.
There is now ARM-specific installation instructions in the documentation and a docker-compose file in /docker/dist-arm/ for this image.
I've been able to run Checkmate on my rpi 4 without any problems.
Thank you @ajhollid and @gorkem-bwl for bringing this feature !
PS : In the docker-compose file, the port mappings for redis and mongodb are probably unneccesary, because all containers are in the same docker network and thus can communicate with each other (I removed them and everything works just fine).
Thanks so much for adding multi-arch support and for the updated backend-dist-mono-multiarch image. I’ve got 2.1 running on my M4 Mac Mini with no issues so far.
I noticed ghcr.io/bluewave-labs/checkmate:backend-dist-mono-multiarch is still pulling version 2.1, not 2.1.1. Am I missing something, or has the tag not been updated yet?
@renardspark Many thanks for your kind words. @ajhollid is the brain behind this - I was sipping coffee :-D