在Openshift Origin 3上运行Spring Boot应用

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载自夜明的孤行灯

本文链接地址: https://www.huangyunkun.com/2017/08/19/run-spring-boot-on-openshift-origin-3/

Openshift Origin是开源的PAAS平台,如果只是为了单机体验,还可以使用minishift。

我之前使用过Openshift 2, 还在上面运行了一些Spring Boot应用。最近又要开始接触Openshift新版本,所以想着用这个练练手,先迁移旧应用过来一下。

在Openshift 2时代,我们需要处理cartridge,它定义了一些基本的东西,比如Tomcat,Cron任务等等,如果你需要的不在这之中,还可以使用Diy。也就是说你需要在代码库中提供action hooks,包括start和stop。我当时是自定义了这两个脚本,然后运行了spring boot应用。

然后到了Openshift Origin 3,我发现我找不到名为Diy的模板了。一番研究才发现居然没有 cartridge,改成images了。当然原因有很多,官方也给出了一篇详细的说明,但是我并不是很关心,我只想知道怎么迁移。

为了方便的从源代码生成Docker用镜像,Openshift Origin 3使用了s2i,大致原理如下:

  1. 将源代码注入构建用镜像中
  2. 必要的构建步骤
  3. 将构建结果提交并设置启动入口

我们用Spring Boot应用来举个例子,大概步骤如下:

  1. 将源代码注入构件用镜像,该镜像包含Java(也可以包含Maven和Gradle,我自建了一个包含不同版本的Maven Wrapper和Gradle Wrapper的镜像)
  2. 运行构建脚本生成jar包
  3. 将jar包提交并设置入口为java -jar <jar path> <other args>

对于具体的脚本名称,s2i又有如下约定

  1. assemble 构建打包
  2. run 运行应用
  3. save-artifacts 提交构建物
  4. usage 使用说明

第一个和第二个是必要的,第三个和第四个是可选的。

有了以上规范,我们可以很容易将项目迁移过来,主要是将旧的start和stop拆分一下,放入新的结构中。

当然还有更简单的就是使用一些通用的,比如我找到了一个s2i-java的项目,支maven和gradle(版本固定),理论上兼容所有java -jar启动方式的项目。

直接导入就可以使用

oc create -f https://raw.githubusercontent.com/jorgemoralespou/s2i-java/master/ose3/s2i-java-imagestream.json

参考资料

https://docs.openshift.com/enterprise/3.0/whats_new/carts_vs_images.html

https://github.com/openshift/source-to-image

https://github.com/jorgemoralespou/s2i-java

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载自夜明的孤行灯

本文链接地址: https://www.huangyunkun.com/2017/08/19/run-spring-boot-on-openshift-origin-3/

发表评论