5

我正在尝试使用 Google 的Jib 项目Jib Maven Plugin构建 Docker 映像。

我不明白如何指定 JRE 版本。

我知道我可以在插件的 config中进行自定义,例如:

<configuration>
  <from>
    <image>gcr.io/distroless/java</image>
  </from>
</configuration>

但这对于将要使用的实际 JRE 版本意味着什么?如果我要专门说 JRE 8u172 怎么办?

Jib 项目将其描述为一个特性:

可重现- 使用相同内容重建容器映像始终会生成相同的映像。

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

级别:Java 和 Maven 高级,Docker 新手。

4

2 回答 2

3

8u172 的可用性取决于分发者是否创建了该版本的构建映像。

java 构建版本不使用带有gcr.io/distroless/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>

于 2019-05-05T13:23:37.100 回答
1

您可能希望使用预安装了 java 的基本映像。每个 docker 镜像都包含标签,就像版本一样。如果您没有像上面那样指定标签,则会采用最新的标签,这可能导致 java 版本的意外更改。

例如,您可以使用opendjk带有 java 版本8u212的图像使用openjdk:8u212-jre-stretch. 在OpenJDK Docker Hub中,您可以看到所有可用标签的列表

于 2019-05-05T13:19:46.303 回答