带有臂架的JRE版本(Docker)

时间:2019-05-05 11:53:15

标签: java docker jib

我正在尝试着用Google的Jib projectJib Maven Plugin构建Docker映像。

我不知道如何指定JRE版本。

我知道我可以在plugin's config中进行自定义,例如:

>>> import pyexcel
>>> reader = pyexcel.Reader("example.csv""")
>>> print reader[1][1]
5

但是对于将要使用的实际JRE版本而言,这意味着什么?如果我要特别说一下JRE 8u172,怎么办?

Jib项目将其声明为一项功能:

  

可复制-使用相同的内容重建容器图像   总是生成相同的图像。

因此,我假设必须有某种方法来锁定JRE版本?

级别:在Java和Maven上是高级的,在所有Docker上都是新手。

2 个答案:

答案 0 :(得分:1)

您可能要使用预安装了Java的基本映像。每个docker映像都包含标签,与版本类似。如果您没有像上面那样指定标记,则会采用最新的标记,这可能会导致Java版本的意外更改。

例如,您可以使用opendjk8u212图像与Java版本openjdk:8u212-jre-stretch一起使用。在OpenJDK Docker Hub中,您可以看到所有可用标签的列表

答案 1 :(得分:1)

是否提供8u172取决于发行商是否已创建该版本的构建映像。

java构建版本无法通过带有gcr.io/distroless/java的docker image标签进行管理。
当前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>