openshift k8s_带有DIY的Openshift上的Spring Boot / Java 8 / Tomcat 8
openshift k8s
DIY盒带是一种实验性盒带,提供了一种在OpenShift上测试不受支持的语言的方法。 它提供了最小限度的自由形式的支架,将墨盒的所有细节留给了应用程序开发人员 。 这篇博客文章说明了结合了PostgreSQL服务的Spring Boot / Java 8 / Tomcat 8应用程序的使用。
创建新的应用程序
先决条件
在开始构建应用程序之前,我们需要安装一个OpenShift免费帐户和客户端工具。
步骤1:建立DIY应用程式
要使用客户端工具创建应用程序,请键入以下命令:
rhc app create boot diy-0.1
此命令使用DIY盒式磁带创建应用程序引导 ,并将存储库克隆到引导目录。
步骤2:将PostgreSQL墨盒添加到应用程序
我们正在创建的应用程序将使用PostgreSQL数据库,因此我们需要向该应用程序添加适当的盒式磁带:
rhc cartridge add postgresql-9.2 --app boot
创建盒带后,可以使用以下命令检查其状态:
rhc cartridge status postgresql-9.2 --app boot
步骤3:删除模板应用程序源代码
OpenShift创建一个可以自由删除的模板项目:
git rm -rf .openshift README.md diy misc
提交更改:
git commit -am "Removed template application source code"
步骤4:从GitHub提取源代码
git remote add upstream https://github.com/kolorobot/openshift-diy-spring-boot-sample.git
git pull -s recursive -X theirs upstream master
步骤5:推送变更
基本模板随时可以推送:
git push
初始部署(构建和应用程序启动)将花费一些时间(最多几分钟)。 尽管在小型Gear上启动Spring Boot应用程序可能要花2分钟以上的时间,但后续部署要快一些:
Tomcat started on port(s): 8080/http
Started Application in 125.511 seconds
现在,您可以浏览到: http : //boot-yournamespace.rhcloud.com/manage/health ,您应该看到:
{"status": "UP","database": "PostgreSQL","hello": 1
}
您也可以浏览API。 要了解您拥有哪些选项,请导航至应用程序的根目录。 您应该看到资源根目录,其中包含指向可用资源的链接:
{"_links" : {"person" : {"href" : "http://boot-yournamespace.rhcloud.com/people{?page,size,sort}","templated" : true}}
}
导航到http://boot-yournamespace.rhcloud.com/people应该从数据库返回所有人员。
第6步:添加詹金斯
使用詹金斯有一些优势。 其中之一是构建是在其自己的Gear中进行的。 要使用Jenkins进行构建,OpenShift需要服务器和连接到应用程序的Jenkins客户端盒。 创建Jenkins应用程序:
rhc app create ci jenkins
并将Jenkins客户端附加到应用程序:
rhc cartridge add jenkins-client --app boot
现在,您可以浏览到: http:// ci- .rhcloud.com并使用提供的凭据登录。 当您进行下一个更改并将其推送时,构建将由Jenkins触发:
remote: Executing Jenkins build.
remote:
remote: You can track your build at https://ci-<namespace>.rhcloud.com/job/boot-build
remote:
remote: Waiting for build to schedule.........
而且,当您观察到构建结果时,该应用程序在Jenkins上的启动速度会更快一些。
引擎盖下
为什么要DIY?
可以将Spring Boot应用程序部署到OpenShift上的Tomcat盒中。 但是目前没有Tomcat 8和Java 8支持,因此选择了DIY。 DIY有局限性:例如,无法缩放。 但这是尝试和玩新事物的完美选择。
应用结构
该应用程序是一个常规的Spring Boot应用程序,可以使用http://start.spring.io进行引导。 使用的构建系统是Maven,包装类型是Jar。 使用Java 8的Tomcat 8。 Spring Boot默认使用Tomcat 7,要对其进行更改,添加了以下属性:
<properties><tomcat.version>8.0.9</tomcat.version>
</properties>
之所以选择Maven,是因为目前只能在OpenShift上使用Gradle 1.6。 这是由于Gradle中的错误所致。 Gradle 2.2解决了此问题。
Maven settings.xml
settings.xml
文件非常重要,因为它包含Maven存储库的位置: ${OPENSHIFT_DATA_DIR}/m2/repository
。
在OpenShift上,写入权限仅在$ OPENSHIFT_DATA_DIR中。
数据源配置
该应用程序使用Spring Data REST通过REST导出存储库。 所需的依赖项是:
- spring-boot-starter-data-jpa –存储库配置
- spring-boot-starter-data-rest –公开基于REST的存储库
- hsqldb –用于嵌入式数据库支持
- postgresql –用于PostgreSQL支持。 由于当前OpenShift使用PostgreSQL 9.2,因此使用了适当的驱动程序版本
通用属性– application.properties
默认情况下(默认配置文件src/main/resources/application.properties
),应用程序将使用嵌入式HSQLDB并使用src/main/resources/data.sql
。 数据文件可以在HSQLDB和PostrgeSQL上运行,因此我们不需要提供特定于平台的文件(Spring Boot可以实现)。
spring.datasource.initialize = true
必须使用spring.datasource.initialize = true
,因此Spring Boot会拾取数据文件并将其加载到数据库中。spring.jpa.generate-ddl = true
可确保将导出架构。
OpenShift属性– application-openshift.properties
特定于OpenShift的配置( src/main/resources/application-openshift.properties
)允许使用PostgreSQL服务。 该配置使用OpenShift env变量来设置连接属性:
- $ OPENSHIFT_POSTGRESQL_DB_HOST –用于数据库主机
- $ OPENSHIFT_POSTGRESQL_DB_PORT –用于数据库端口
- $ OPENSHIFT_APP_NAME –数据库名称
- $ OPENSHIFT_POSTGRESQL_DB_USERNAME –用于数据库用户名
- $ OPENSHIFT_POSTGRESQL_DB_PASSWORD –用于数据库密码
Spring允许直接使用${}
语法在属性中使用env变量,例如:
spring.datasource.username = ${OPENSHIFT_POSTGRESQL_DB_USERNAME}
为了让Spring Boot激活OpenShift配置文件,在启动时将spring.profiles.active
属性传递给应用程序: java -jar <name>.jar --spring.profiles.active=openshift
。
登录OpenShift
日志文件将存储在$ OPENSHIFT_DATA_DIR中:
logging.file=${OPENSHIFT_DATA_DIR}/logs/app.log
执行器
执行器的默认管理上下文路径为/
。 更改为/manage
,因为OpenShift公开了/health
端点本身,该端点涵盖了Actuator的/health
端点。
management.context-path=/manage
OpenShift action_hooks
OpenShift在部署过程中的特定位置执行动作挂钩脚本文件。 所有挂钩都放置在应用程序存储库的.openshift/action_hooks
目录中。 文件必须是可执行的。 在Windows中,可以在Git Bash中使用以下命令:
git update-index --chmod=+x .openshift/action_hooks/*
部署应用程序
deploy
脚本下载Java和Maven,创建一些目录,并导出正确运行Java 8 / Maven构建所需的几个环境变量。
部署的最后命令是运行Maven目标:
mvn -s settings.xml clean install
启动应用程序
deploy
脚本成功完成后, target
目录将包含一个组装了Spring Boot应用程序的jar。 该应用程序已启动,并绑定到OpenShift提供的服务器地址和端口。 另外,提供了概要文件名称,因此将创建有效的数据源。 运行该应用程序的最终命令:
nohup java -Xms384m -Xmx412m -jar target/*.jar --server.port=${OPENSHIFT_DIY_PORT} --server.address=${OPENSHIFT_DIY_IP} --spring.profiles.active=openshift &
停止应用
stop
脚本正在寻找Java进程,当找到它时…您知道会发生什么。
摘要
我对“自己动手做”墨盒对OpenShift的评估感到非常满意。 并非所有事情都像我预期的那样顺利,主要是由于小型Gear的内存限制。 我花了一些时间弄清楚并进行了正确的配置。 但是,带有DIY的OpenShift值得尝试一小会儿。 尤其是,完全免费开始。
参考资料
- 在整篇文章中使用的项目源代码可以在GitHub上找到: https : //github.com/kolorobot/openshift-diy-spring-boot-sample 。
- Spring Boot文档: http : //docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#cloud-deployment-openshift
- 创建本文时使用了一些OpenShift参考:
https://blog.openshift.com/run-gradle-builds-on-openshift
https://blog.openshift.com/tips-for-creating-openshift-apps-with-windows
翻译自: https://www.javacodegeeks.com/2014/10/spring-boot-java-8-tomcat-8-on-openshift-with-diy.html
openshift k8s
openshift k8s_带有DIY的Openshift上的Spring Boot / Java 8 / Tomcat 8相关推荐
- 带有DIY的Openshift上的Spring Boot / Java 8 / Tomcat 8
DIY墨盒是一种实验性墨盒,它提供了一种在OpenShift上测试不受支持的语言的方法. 它提供了最小限度的自由形式的支架,将墨盒的所有细节留给了应用程序开发人员 . 这篇博客文章说明了结合了Post ...
- openshift使用_OpenShift DIY:使用Gradle构建Spring Boot / Undertow应用程序
openshift使用 由于此错误, Gradle 1.6是在OpenShift上运行的最后一个受支持的Gradle版本. 但是从Gradle 2.2开始,这不再是问题,因此,使用自己动手做墨盒,在O ...
- Openshift:使用Java 8在Wildfly 8.2.0上构建Spring Boot应用程序
OpenShift DIY墨盒是在OpenShift上测试不受支持的语言的好方法. 但是它不具有可伸缩性(您可以在此处为可伸缩DIY墨盒投票),这使得它很难与生产级Spring Boot应用程序一起使 ...
- OpenShift DIY:使用Gradle构建Spring Boot / Undertow应用程序
由于此bug, Gradle 1.6是在OpenShift上运行的最后一个受支持的Gradle版本. 但是从Gradle 2.2开始,这不再是问题,因此使用自己动手做墨盒在OpenShift上运行最新 ...
- aws 删除ec2实例_如何在AWS EC2实例上部署Spring Boot应用程序
aws 删除ec2实例 你好朋友, 在本教程中,我们将看到如何在AWS EC2实例上部署Spring Boot应用程序. 这是我们将要执行的步骤. 1.使用Spring Boot Initialise ...
- 如何在AWS EC2实例上部署Spring Boot应用程序
你好朋友, 在本教程中,我们将看到如何在AWS EC2实例上部署Spring Boot应用程序. 这是我们将要执行的步骤. 1.使用Spring Boot Initialiser创建一个Spring ...
- 在Amazon Elastic Beanstalk上部署Spring Boot应用程序
在此博客中,我们将看到如何在Amazon ElasticBeanstalk上部署Spring Boot应用程序. Amazon ElasticBeanstalk具有一个预配置的Java环境,可用于部署 ...
- 快速入门:OpenShift上的Spring Boot和WildfFly 8.2
与Spring Boot,WildFly和OpenShift相比,这是真正的"快速入门",与我上一篇更具描述性的文章相反. 先决条件 在开始构建应用程序之前,我们需要安装一个Ope ...
- synology_用于在Synology NAS上测试Spring Boot Web应用程序的JUnit模拟文件
synology 对于将在Synology RS815 + NAS上检查备份文件的Spring Boot应用程序,我们希望能够轻松测试此NAS上存储的文件,而不必复制存储在该NAS上的7TB. 理想情 ...
最新文章
- Qt之QFutureWatcher
- python基础语法手册format-Python基础语法-格式化输出
- 用html编写ASCII表,HTML ASCII
- 看完这篇垃圾回收,和面试官扯皮没问题了
- 【SpringCloud】Spring cloud Alibaba Nacos 集群和持久化配置
- B django模型系统(后续1)
- velocity java 静态方法_java – 如何访问Velocity模板中的静态成员?
- Automapper问题记录
- 计算机应用基础陈江鸿,广播电视大学计算机教育改革探索与实践-计算机教育论文-计算机论文(6页)-原创力文档...
- 国外值得关注的网站系列之一
- 高速电路设计基本概念之——PCB板材各项参数解读
- 卷积神经网络通道剪枝算法小结
- 微信PC版怎么安装旧版本
- 是否还为制作PPT而烦恼?珍藏的PPT实用网站打包送给你!
- Android Studio导致的假死机问题的解决
- 网络信息检索(一)检索模型:布尔,向量,概率检索
- 2015年 网络工程师试卷答案及详解
- 港澳台、内地身份证号校验规则
- python爬虫— 利用js2xml 获取 script 数据
- 《看不见的森林:林中自然笔记》书摘一