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相关推荐

  1. 带有DIY的Openshift上的Spring Boot / Java 8 / Tomcat 8

    DIY墨盒是一种实验性墨盒,它提供了一种在OpenShift上测试不受支持的语言的方法. 它提供了最小限度的自由形式的支架,将墨盒的所有细节留给了应用程序开发人员 . 这篇博客文章说明了结合了Post ...

  2. openshift使用_OpenShift DIY:使用Gradle构建Spring Boot / Undertow应用程序

    openshift使用 由于此错误, Gradle 1.6是在OpenShift上运行的最后一个受支持的Gradle版本. 但是从Gradle 2.2开始,这不再是问题,因此,使用自己动手做墨盒,在O ...

  3. Openshift:使用Java 8在Wildfly 8.2.0上构建Spring Boot应用程序

    OpenShift DIY墨盒是在OpenShift上测试不受支持的语言的好方法. 但是它不具有可伸缩性(您可以在此处为可伸缩DIY墨盒投票),这使得它很难与生产级Spring Boot应用程序一起使 ...

  4. OpenShift DIY:使用Gradle构建Spring Boot / Undertow应用程序

    由于此bug, Gradle 1.6是在OpenShift上运行的最后一个受支持的Gradle版本. 但是从Gradle 2.2开始,这不再是问题,因此使用自己动手做墨盒在OpenShift上运行最新 ...

  5. aws 删除ec2实例_如何在AWS EC2实例上部署Spring Boot应用程序

    aws 删除ec2实例 你好朋友, 在本教程中,我们将看到如何在AWS EC2实例上部署Spring Boot应用程序. 这是我们将要执行的步骤. 1.使用Spring Boot Initialise ...

  6. 如何在AWS EC2实例上部署Spring Boot应用程序

    你好朋友, 在本教程中,我们将看到如何在AWS EC2实例上部署Spring Boot应用程序. 这是我们将要执行的步骤. 1.使用Spring Boot Initialiser创建一个Spring ...

  7. 在Amazon Elastic Beanstalk上部署Spring Boot应用程序

    在此博客中,我们将看到如何在Amazon ElasticBeanstalk上部署Spring Boot应用程序. Amazon ElasticBeanstalk具有一个预配置的Java环境,可用于部署 ...

  8. 快速入门:OpenShift上的Spring Boot和WildfFly 8.2

    与Spring Boot,WildFly和OpenShift相比,这是真正的"快速入门",与我上一篇更具描述性的文章相反. 先决条件 在开始构建应用程序之前,我们需要安装一个Ope ...

  9. synology_用于在Synology NAS上测试Spring Boot Web应用程序的JUnit模拟文件

    synology 对于将在Synology RS815 + NAS上检查备份文件的Spring Boot应用程序,我们希望能够轻松测试此NAS上存储的文件,而不必复制存储在该NAS上的7TB. 理想情 ...

最新文章

  1. Qt之QFutureWatcher
  2. python基础语法手册format-Python基础语法-格式化输出
  3. 用html编写ASCII表,HTML ASCII
  4. 看完这篇垃圾回收,和面试官扯皮没问题了
  5. 【SpringCloud】Spring cloud Alibaba Nacos 集群和持久化配置
  6. B django模型系统(后续1)
  7. velocity java 静态方法_java – 如何访问Velocity模板中的静态成员?
  8. Automapper问题记录
  9. 计算机应用基础陈江鸿,广播电视大学计算机教育改革探索与实践-计算机教育论文-计算机论文(6页)-原创力文档...
  10. 国外值得关注的网站系列之一
  11. 高速电路设计基本概念之——PCB板材各项参数解读
  12. 卷积神经网络通道剪枝算法小结
  13. 微信PC版怎么安装旧版本
  14. 是否还为制作PPT而烦恼?珍藏的PPT实用网站打包送给你!
  15. Android Studio导致的假死机问题的解决
  16. 网络信息检索(一)检索模型:布尔,向量,概率检索
  17. 2015年 网络工程师试卷答案及详解
  18. 港澳台、内地身份证号校验规则
  19. python爬虫— 利用js2xml 获取 script 数据
  20. 《看不见的森林:林中自然笔记》书摘一

热门文章

  1. jzoj3084-超级变变变【数学】
  2. 读人人都是产品经理__2
  3. Nacos(三)之架构
  4. 部署shiro官方源码时,执行maven命令出错
  5. 深入Java集合学习系列:LinkedHashSet的实现原理
  6. SpringCloud服务安全连接
  7. Redis入门(一)之安装
  8. 05-传统开发模式DAO
  9. 三个剩两个,两个剩一个,最后一个都没剩下。
  10. sqlserver建库建表建约束,删库删表删约束的示例总结