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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/339131.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

都兰县第一中学计算机,都兰县第一中学教案.doc

PAGE \* MERGEFORMATPAGE \* MERGEFORMAT 1都兰县第一中学教案班级初一.班周次9时间45分钟课时2授课教师席得勋教学内容篮球&#xff1a;胸前双手传接球器 材篮球25个、栏架4个、垫子4个、长凳4个、标志桶4个教学目标运动参与目标:通过学习激发学生兴趣&#xff0c;使学生积极参…

.sql文件如何执行_mysql:一条SQL查询语句是如何执行的?

本篇文章将通过一条 SQL 的执行过程来介绍 MySQL 的基础架构。首先有一个 user_info 表&#xff0c;表里有一个 id 字段&#xff0c;执行下面这条查询语句&#xff1a;select * from user_info where id 1;返回结果为&#xff1a;-------------------------------------------…

jooq和jdbc_在jOOQ之上构建的RESTful JDBC HTTP服务器

jooq和jdbcjOOQ生态系统和社区正在持续增长。 我们个人总是很高兴看到基于jOOQ构建的其他开源项目。 今天&#xff0c;我们非常高兴为您介绍BjrnHarrtell结合REST和RDBMS的一种非常有趣的方法。 BjrnHarrtell从小就是瑞典的程序员。 他通常在Sweco Position AB上忙于编写GIS系…

C 虚函数表及多态内部原理详解

C 中的虚函数的作用主要是实现了多态的机制。关于多态&#xff0c;简而言之就是用父类型别的指针指向其子类的实例&#xff0c;然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”&#xff0c;这是一种泛型技术。虚函数表每个含有虚函数的类都…

html代码编辑器sp,在线HTML编译,文本关键字高亮显示,富文本编辑实现大概思路...

????最近被安排做了一个HTML在线编译功能&#xff0c;也利用这个机会对HTML在线编译&#xff0c;关键字高亮&#xff0c;富文本编辑器等的实现做了一些比较表面的研究&#xff0c;做简要记录&#xff0c;以便再次遇到作为参考。????在线HTML编译????首先需要一个能…

numpy 平方_NumPy入门指南

本文介绍了NumPy的基础知识&#xff0c;NumPy是使用Python进行科学计算的软件包。我们将在此处介绍几类基本的数组操作&#xff1a; 创建NumPy数组 重塑数组 NumPy的数学运算 数组的索引和切片 遍历数组首先&#xff0c;让我们将NumPy导入为np。 这使我们可以使用快捷方式np来引…

android 揭示动画_揭示垃圾收集暂停的时间长度

android 揭示动画有几种方法可以改善您的产品。 一种这样的方法是仔细跟踪用户的体验并在此基础上进行改进。 我们确实自己应用了此技术&#xff0c;并再次花了一些时间查看不同的数据 除了我们追求的许多其他方面之外&#xff0c;我们还提出了一个问题“延迟GC触发应用程序的…

10 张程序员喜爱的壁纸,需要自取~

喜欢的话就请点个再看&#xff0c;分享到朋友圈吧~

iptables 开放远程_JavaWeb项目的部署以及远程调试

不点蓝字&#xff0c;我们哪来故事&#xff1f;Linux环境下软件的安装Linux环境下的程序的安装、更新、卸载和查看。rpm 命令&#xff1a;相当于windows程序的添加/卸载程序&#xff0c;进程程序的安装&#xff0c;查看&#xff0c;卸载。本地程序安装&#xff1a;rpm -ivh 程序…

计算机网络应用基础论文,计算机网络应用基础概述论文

如今计算机网络技术应用的范围比较普遍&#xff0c;已经渗透到了人们工作和生活的各个方面。计算机网络的应用代表着社会进入了一个全新的时代&#xff0c;是生产力发展到一定阶段的产物。下面是答.案.网 ZQNf.Com小编给大家推荐的计算机网络应用基础概述论文&#xff0c;希望大…

java 性能调优_Java性能调优调查结果(第一部分)

java 性能调优我们在2014年10月进行了Java性能调优调查。该调查的主要目的是收集对Java性能世界的见解&#xff0c;以改善Plumbr产品。 但是&#xff0c;我们也很高兴与您分享有趣的结果。 我们收集的数据为进行冗长的分析提供了素材&#xff0c;因此我们决定将结果划分为一系列…

wps生成正态分布的随机数_量子计算与机器学习: 量子生成对抗网络QGAN

随着量子信息和量子计算的快速发展&#xff08;经费多了&#xff09;&#xff0c;科研工作者们一边感叹着量子计算机时代即将拥有的强大计算能力&#xff0c;一边又在考虑着如何将现有的高效算法和量子计算机相适配。作为最近几年如此火爆的机器学习&#xff0c;也就自然而然地…

通过反汇编来理解restrict关键字

一次难忘的面试经历多年前&#xff0c;一次互联网某厂实习生的面试题&#xff0c;题目的代码片段很简单&#xff0c;如下&#xff1a;1 #include 2 int main()3 {4 int *restrict pInt (int*)malloc(4);5 int *pNewInt pInt;6 return 0;7 } 12345678面试官问…

python车牌识别系统开源代码_汽车牌照识别系统【YOLO+MLP】

车牌识别系统可以自动检测并识别图像中的车辆牌照&#xff0c;其算法主要包括牌照定位、牌照分割、字符识别等步骤。本文将给出一种基于深度学习的车牌识别系统方案。要快速掌握开发人工智能系统的技能&#xff0c;推荐汇智网的 机器学习系列在线课程由于可以自动地从视频图像中…

幻灯片演示什么模式最好_清洁单元测试图案–演示幻灯片

幻灯片演示什么模式最好我有机会在2014年GDG DevFestKarlsruhe会议上谈论“清洁单元测试模式”。 感谢组织者邀请我&#xff0c;也感谢所有听我讲话的人。 如所承诺的&#xff0c;我为那些想看一下我在演讲中没有讲过的其他幻灯片的人分享了演示文稿&#xff1a; 清洁单元测试…

js text 和 html,JS DOM innerText和textContent的区别

innerText和textContent很多人会困惑&#xff0c;因为都可以用来获取文本内容&#xff0c;实际上&#xff0c;两者还是有很多区别的&#xff0c;本文就将介绍这两个属性的异同&#xff0c;希望可以对大家的学习有所帮助。一、之前错误的认识innerText IE6就开始支持&#xff0c…

如何用耳机翻页_游戏耳机的经典之作—罗技(G)Astro A40体验

前言经常去网吧玩游戏的朋友&#xff0c;在家玩如果没有头戴式耳机&#xff0c;那体验真的会差一大截。优秀的电竞游戏耳机会带来更好的游戏体验&#xff0c;不仅是舒适性。像绝地求生这类FPS游戏&#xff0c;游戏耳机会让听声辩位更容易更精确。最近因为大促降价入手的罗技&am…

我改了500个Bug,但是!!

IT程序猿 微博网友评论&#xff1a;空白一页blank&#xff1a;不写bug怎么改bug 抠Bee&#xff1a;不经意间病毒都出来了我在海的这边你在哪里丫&#xff1a;好了&#xff0c;发给开发小弟了富贵小小神仙&#xff1a;要不然呢&#xff0c;那些从开发到维护的程序员不都是靠这么…

jboss maven_使用Maven配置JBoss / Wildfly数据源

jboss maven大多数Java EE应用程序在其业务逻辑中使用数据库访问&#xff0c;因此开发人员经常面临在应用程序服务器中配置驱动程序和数据库连接属性的需求。 在本文中&#xff0c;我们将使用Maven为JBoss / Wildfly和Postgre数据库自动化该任务。 这项工作是根据我从以前的魔兽…

globalmapper如何选取图像上的点_OpenCV 进阶应用,用编程手段搞定图像处理

在我们生活中&#xff0c;常见的图像处理软件有Adobe Photoshop、Adobe Illustrator等。然而&#xff0c;并非只有软件才能实现图像处理&#xff0c;通过编程手段也是能实现的&#xff01;通过编程手段实现图像处理&#xff0c;也就是计算机视觉。所谓计算机视觉&#xff0c;就…