Provides base Java Docker images using Alpine, Liberica an glibc.
Builds run daily, but updates to images are only pushed if Apline or the JVM is updated.
This repository is derived from the images defined in the Liberica public repo licenced under GPL 2.0.
This repo currently maintains builds for versions 11 and 17 of the JRE. The image name/tags are as follows:
ghcr.io/permutive-engineering/permutive-jre-liberica:17
ghcr.io/permutive-engineering/permutive-jre-liberica:11
In addition to the major versions, builds of each JDK (shipped as a JRE) are maintained individually. Follow the links below to see which are available:
For all available image versions see the Github Packages listing for this repo.
For a number of interconnected reasons:
- We want to use Alpine Linux as our base image because
- It is small, so less to pull from the registry on startup
- It has fewer binaries in the base image, so a smaller attack surface than Debian
- Alpine Linux ships with Musl libc
- This has been known to cause runtime failures with Java libraries that use native C bindings, such as gRPC and Snappy. The compatibility packages
libc6-compat
andgcompat
have proven to be unreliable - Using the "real" glibc has proven to be the best approach
- This has been known to cause runtime failures with Java libraries that use native C bindings, such as gRPC and Snappy. The compatibility packages
- Liberica is the only JRE that runs on Alpine Linux using glibc
- They only build a new image when a new JVM is released not when the base image is updated, meaning important security updates could be missed
- Azul publish JREs with an Alpine Linux base, but at time of writing these are built against Musl, so won't work under glibc