

刚刚发布了OpenShift Java S2I镜像,该镜像使您能够自动构建和部署Java微服务,并且现已公开提供。本文介绍如何开始使用Java S2I容器镜像,但首先,让我们讨论为什么拥有Java S2I镜像如此重要。
Java S2I镜像使开发人员只需指定应用程序源代码或编译后的Java二进制文件的位置,即可在OpenShift Container Platform中按需自动构建,部署和运行Java应用程序。
在许多情况下,这些Java应用程序都是可启动的“fat jar”,其中包括应用程序服务器(如嵌入式Tomcat)和其他框架的嵌入式版本。这样的开源项目的一个示例是Spring Boot,Eclipse Vert.x和WildFly Swarm。拥有专门为OpenShift设计的通用Java S2I镜像,通过包含许多有用的功能,使得可启动Fat Jar的开发变得更加容易,例如:
/target目录中使用要运行的JAR。如果不是这种情况,则可以使用环境变量ARTIFACT_DIR。同样,如果一个构建产生多个JAR文件(在本文后面的Eclipse Vert.x示例中就是这种情况),则可以使用环境变量JAVA_APP_JAR指定要运行的JAR文件。但是,在大多数情况下,您要做的就是直接指向源存储库(如Git仓库),Java S2I镜像将起作用。JAVA_OPTIONS中的-Xmx为堆设置固定值来禁用此功能 。AB_JOLOKIA_OFF设置为true来禁用此功能。MAVEN_CLEAR_REPO设置为true。以下是分步说明,它们举例说明了使用Java S2I镜像的一种方法。
oc new-project myprojectoc create -f openjdk-s2i-imagestream.json


对于WildFly Swarm示例,可以使用:https://github.com/redhat-helloworld-msa/hola.git1
对于Eclipse Vert.x示例,可以使用:https://github.com/redhat-helloworld-msa/aloha.git2
对于Spring Boot示例,可以使用:https://github.com/redhat-helloworld-msa/ola.git


/api/hola添加到地址栏(对于Spring Boot示例,为/api/ola),其结果应类似于下图。

我希望您喜欢Java S2I入门指南。
[1] 请注意,由于WildFly Swarm和Jolokia的已知问题,您还应该单击Show advanced…,然后将一个环境变量添加到Deployment Configuration中,名称为AB_JOLOKIA_OFF且值为true
[2] Eclipse Vert.x的示例项目生成了两个JAR文件,因此我们需要通过单击Show advanced…来告知要使用哪个Java S2I镜像,并将环境变量添加到Deployment Configuration中, 名称为JAVA_APP_JAR且值为aloha-fat.jar。