我正在尝试着用Google的Jib project和Jib Maven Plugin构建Docker映像.
我不明白如何指定JRE版本.
我知道我可以在plugin’s config中进行自定义,例如:
<configuration>
<from>
<image>gcr.io/distroless/java</image>
</from>
</configuration>
但是,对于将要使用的实际JRE版本而言,这意味着什么?如果我要特别说一下JRE 8u172,该怎么办?
Jib项目将此功能描述为:
Reproducible – Rebuilding your container image with the same contents
always generates the same image.
因此,我假设必须有某种方法来锁定JRE版本?
级别:在Java和Maven上是高级的,在所有Docker上都是新手.
最佳答案
8u172的可用性取决于分发者是否已创建该版本的构建映像.
无法使用带有gcr.io/distroless/java的docker映像标签管理Java构建版本.
当前是gcr.io/distroless/java:8,如下所示是8u212.
https://console.cloud.google.com/gcr/images/distroless/GLOBAL/java?gcrImageListsize=30
~ $docker run -it --rm --entrypoint java gcr.io/distroless/java:8 -version
openjdk version "1.8.0_212"
OpenJDK Runtime Environment (build 1.8.0_212-8u212-b01-1~deb9u1-b01)
OpenJDK 64-Bit Server VM (build 25.212-b01, mixed mode)
~ $
如果要指定Java构建版本,建议使用AdroptOpenJDK.
例如
<configuration>
<from>
<image>adoptopenjdk/openjdk8:jdk8u172-b11</image>
</from>
</configuration>
如果可以使用8u171,则可以选择openjdk.
<configuration>
<from>
<image>openjdk:8u171-jre</image>
</from>
</configuration>
> https://hub.docker.com/r/adoptopenjdk/openjdk8/tags
> https://hub.docker.com/_/openjdk?tab=tags&page=4