Dockerfiles and build scripts for generating various Docker Images related to OpenJDK. Currently this builds OpenJDK images with hotspot and Eclipse OpenJ9 on Ubuntu and Alpine Linux.
- Hotspot is supported on
aarch64
,ppc64le
,s390x
andx86_64
. - Eclipse OpenJ9 is supported on
ppc64le
,s390x
andx86_64
.
Please note you'll need to upgrade bash shell on Mac OS X if you're to use our Docker images on there.
The Dockerfiles and associated scripts found in this project are licensed under the Apache License 2.0..
- There are two kinds of build images
- Release build images
- These are release tested versions of the JDKs.
- Associated tags: latest, alpine, ${version}
- Nightly build images
- These are nightly builds with minimal testing.
- Associated tags: nightly, alpine-nightly, ${version}-nightly
- Release build images
- There are two build types
- Full build images
- This consists of the full JDK.
- Associated tags: latest, alpine, ${version}
- Slim build images
- These are stripped down JDK builds that remove functionality not typically needed while running in a cloud.
- Associated tags: slim, alpine-slim, ${version}-slim
- Full build images
Here is a listing of the image sizes for the various build images and types for JDK Version 8
VMs | latest | slim | nightly | nightly-slim | alpine | alpine-slim | alpine-nightly | alpine-nightly-slim |
---|---|---|---|---|---|---|---|---|
OpenJ9 | 339MB | 251MB | 344MB | 250MB | 208MB | 120MB | 213MB | 118MB |
Hotspot | 324MB | 238MB | 324MB | 238MB | 193MB | 106MB | 193MB | 106MB |
Notes:
- The alpine-slim images are about 60% smaller than the latest images.
- The Alpine Linux and the slim images are not yet TCK certified.
# Steps 1-2 needs to be run on all supported arches.
# i.e aarch64, ppc64le, s390x and x86_64.
# 1. Clone this github repo
$ git clone https://github.com/AdoptOpenJDK/openjdk-docker
# 2. Build images and tag them appropriately
$ cd openjdk-docker
$ ./build_all.sh
# Steps 3 needs to be run only on x86_64
# 3. build_all.sh should be run on all supported architectures to build and push images to the
# docker registry. The images should now be available on hub.docker.com but without multi-arch
# support. To add multi-arch support, we need to generate the right manifest lists and push them
# to hub.docker.com. The script generate_manifest_script.sh can be used to
# generate the right manifest commands. This needs to be run only on x86_64 after docker images
# for all architecures have been built and made available on hub.docker.com
$ ./update_manifest_all.sh
# We should now have the proper manifest lists pushed to hub.docker.com to support multi-arch pulls.
Linting dockerfiles (via hadolint)
To lint generated dockerfiles run ./linter.sh - script will download hadolint binary and check all dockerfiles.
# Run generate_latest_sums.sh to get the shasums for the latest binaries on adoptopenjdk.net
$ ./generate_latest_sums.sh $version
# You should now have two files, hotspot_shasums_latest.sh and openj9_shasums_latest.sh. These will
# have the shasums for the latest version for each of the supported arches for hotspot and
# Eclipse OpenJ9 respectively.
# You can now run update_multiarch.sh to generate the Dockerfiles for all supported arches for both
# hotspot and Eclipse OpenJ9.
$ ./update_multiarch.sh $version
# build_latest.sh will do all of the above and build the docker images for the current arch with the
# right set of tags