本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
转载自夜明的孤行灯
本文链接地址: 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,大致原理如下:
- 将源代码注入构建用镜像中
- 必要的构建步骤
- 将构建结果提交并设置启动入口
我们用Spring Boot应用来举个例子,大概步骤如下:
- 将源代码注入构件用镜像,该镜像包含Java(也可以包含Maven和Gradle,我自建了一个包含不同版本的Maven Wrapper和Gradle Wrapper的镜像)
- 运行构建脚本生成jar包
- 将jar包提交并设置入口为java -jar <jar path> <other args>
对于具体的脚本名称,s2i又有如下约定
- assemble 构建打包
- run 运行应用
- save-artifacts 提交构建物
- 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/