{"id":24165947,"url":"https://github.com/mpalourdio/graalvm-springboot-raspberry","last_synced_at":"2026-04-11T04:33:50.641Z","repository":{"id":269402602,"uuid":"907250661","full_name":"mpalourdio/graalvm-springboot-raspberry","owner":"mpalourdio","description":":hibiscus: A Spring Boot application that compiles with GraalVM and runs on a Raspberry Pi","archived":false,"fork":false,"pushed_at":"2026-03-21T11:31:03.000Z","size":88,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-22T02:44:50.514Z","etag":null,"topics":["arm64","docker","graalvm","java","kotlin","native-image","raspberry-pi","spring-boot"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mpalourdio.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"mpalourdio"}},"created_at":"2024-12-23T07:02:16.000Z","updated_at":"2026-03-21T11:31:06.000Z","dependencies_parsed_at":"2025-11-20T23:05:26.437Z","dependency_job_id":null,"html_url":"https://github.com/mpalourdio/graalvm-springboot-raspberry","commit_stats":null,"previous_names":["mpalourdio/graalvm-springboot-raspberry"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mpalourdio/graalvm-springboot-raspberry","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mpalourdio%2Fgraalvm-springboot-raspberry","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mpalourdio%2Fgraalvm-springboot-raspberry/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mpalourdio%2Fgraalvm-springboot-raspberry/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mpalourdio%2Fgraalvm-springboot-raspberry/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mpalourdio","download_url":"https://codeload.github.com/mpalourdio/graalvm-springboot-raspberry/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mpalourdio%2Fgraalvm-springboot-raspberry/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31669116,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-10T17:19:37.612Z","status":"online","status_checked_at":"2026-04-11T02:00:05.776Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arm64","docker","graalvm","java","kotlin","native-image","raspberry-pi","spring-boot"],"created_at":"2025-01-12T20:13:23.214Z","updated_at":"2026-04-11T04:33:50.617Z","avatar_url":"https://github.com/mpalourdio.png","language":"Kotlin","funding_links":["https://github.com/sponsors/mpalourdio"],"categories":[],"sub_categories":[],"readme":"[![CI](https://github.com/mpalourdio/graalvm-springboot-raspberry/actions/workflows/main.yml/badge.svg)](https://github.com/mpalourdio/graalvm-springboot-raspberry/actions/workflows/main.yml)\n\n# Introduction \n\nHey, I am a Raspberry PI (and a GraalVM) enthusiast!\n\nThis a sample project to demonstrate how to build a Spring Boot / GraalVM Docker image for `arm64` architecture.\nIt produces a `linux/arm64` ready docker image, and can be run on a Raspberry Pi for example. In my case, it even runs on a `Raspberry Pi Zero 2 W`, which is insane.\n\nGraalVM needs at least `512 MB` to run, what is not possible on the `Raspberry Pi Zero 2 W`. So I had to produce a `linux/arm64` from `GitHub actions`.\n\n# Steps for building a `linux/arm64` docker image from a `linux/amd64` host\n\n- Install QEMU : `docker run --privileged --rm tonistiigi/binfmt --install all` / `docker run --rm --privileged multiarch/qemu-user-static --reset -p yes`.\n- Validate that it works: `docker run --platform=linux/arm64 --rm -t arm64v8/ubuntu uname -m`. It should return `aarch64`.\n- Build the image for `arm64` architecture : `mvn clean -Pnative spring-boot:build-image -Dspring-boot.build-image.imagePlatform=linux/arm64`.\n- Drink some coffee, learn haskell, build linux from scratch, or just wait for the build to finish. It will take some time.\n- Save the image : `docker save -o /tmp/raspberry.tar docker pull ghcr.io/mpalourdio/graalvm-springboot-raspberry:latest`.\n- Move the image to the target host : `scp /tmp/raspberry.tar pi@192.168.X.X:wherever/`.\n- On the target host : `docker load -i wherever/raspberry.tar`.\n- Run the image : `docker run -p 8080:8080 --hostname=${HOSTNAME} -it ghcr.io/mpalourdio/graalvm-springboot-raspberry:latest`.\n\n# Thanks\n\nKudos to [@dashaun](https://github.com/dashaun/) for the inspiration. Check this blog post [here](https://dashaun.com/posts/multi-architecture-spring-oci-from-anywhere-with-paketo/).\n\n# Image ready to test ?\n\n`docker pull ghcr.io/mpalourdio/graalvm-springboot-raspberry:latest`.  \n[Starting January 2025, GitHub actions provide arm64 runners](https://github.com/orgs/community/discussions/19197#discussioncomment-11859757). This drastically improves build time.\n\n# Failed to create the main Isolate. (code 24) ?\n\nFollow [these instructions](https://pimylifeup.com/raspberry-pi-page-size/) for Raspberry PI 5.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmpalourdio%2Fgraalvm-springboot-raspberry","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmpalourdio%2Fgraalvm-springboot-raspberry","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmpalourdio%2Fgraalvm-springboot-raspberry/lists"}