Minimal, multi-arch Docker image for GraalVM CE, maintained by SoftInstigate for running Java applications (e.g., RESTHeart). Built on Debian Stable Slim, with GraalVM managed via SDKMAN.
- Multi-arch: Supports
linux/amd64andlinux/arm64 - Minimal base: Debian Stable Slim
- SDKMAN: Flexible Java/GraalVM version management
- Clean runtime: Cleans up after install for small image size
Run a Java application with GraalVM:
docker run -it --rm -v "$PWD":/opt/app softinstigate/graalvm java -jar /opt/app/myapp.jar./bin/build.sh # Builds image with --no-cache- Push a git tag (e.g.,
git tag 1.0.0 && git push --tags) - GitHub Actions builds and pushes multi-arch images (
amd64,arm64) - Both
latestand the version tag (e.g.,1.0.0) are published
- Edit
ARG JAVA_VERSIONinDockerfile(e.g.,25-graalce) - Update the version in this
README.md(see Versions) - Test with
./bin/build.shbefore tagging
| Tag | GraalVM Version | Architectures |
|---|---|---|
latest |
25-graalce | amd64, arm64 |
25-graalce |
25-graalce | amd64, arm64 |
24.0.2-graalce |
24.0.2-graalce | amd64, arm64 |
See Docker Hub for all tags.
- Installed at
/root/.sdkman - Config:
auto_answer=true,auto_selfupdate=false,insecure_ssl=true - Entrypoint sources bashrc so
sdkandjavaare available - Cleans up archives/tmp after install
- Images built for
linux/amd64andlinux/arm64via Docker Buildx (QEMU in CI) - Local builds default to host architecture
SHELL ["/bin/bash", "-i", "-c"]enables interactive bash for SDK commands- Entrypoint:
source /root/.bashrc && "$@"ensures environment is loaded
- Triggers only on tag pushes (not regular commits)
- Can be skipped with
[skip ci]in commit message - Requires
DOCKER_USERandDOCKER_TOKENsecrets in repository settings
- Multi-arch issues: Ensure all base images support both
amd64andarm64. - Tagging:
latestalways points to the most recent GraalVM version. - Distroless variant: If using
Dockerfile.distroless, verify the base image supports all required platforms.
Licensed under the Apache 2.0 License.