由于此bug, Gradle 1.6是在OpenShift上运行的最后一个受支持的Gradle版本。 但是从Gradle 2.2开始,这不再是问题,因此使用自己动手做墨盒在OpenShift上运行最新的Gradle不再是问题。 DIY墨盒是一种实验性墨盒,它提供了一种在OpenShift上测试不受支持的语言的方法。 它提供了最小限度的自由形式的支架,将墨盒的所有细节留给了应用程序开发人员。
这篇博客文章说明了在Undertow上运行Spring Boot 1.2和Java 8的用法,它被支持作为Tomcat的轻量级替代方案。 起来并运行不超过10分钟。
先决条件
在开始构建应用程序之前,我们需要安装一个OpenShift免费帐户和客户端工具。
步骤1:建立DIY应用程式
要使用客户端工具创建应用程序,请键入以下命令:
rhc app create <app-name> diy-0.1
此命令使用DIY盒带创建应用程序,并将存储库克隆到目录。
步骤2:删除模板应用程序源代码
OpenShift创建一个可以自由删除的模板项目:
git rm -rf .openshift README.md diy misc
提交更改:
git commit -am "Removed template application source code"
步骤3:从GitHub提取源代码
git remote add upstream https://github.com/kolorobot/openshift-diy-spring-boot-gradle.git
git pull -s recursive -X theirs upstream master
步骤4:推送变更
基本模板已准备好推送到OpenShift:
git push
初始部署(构建和应用程序启动)将花费一些时间(最多几分钟)。 后续部署要快一些:
remote: BUILD SUCCESSFUL
remote: Starting DIY cartridge
remote: XNIO NIO Implementation Version 3.3.0.Final
remote: b.c.e.u.UndertowEmbeddedServletContainer : Undertow started on port(s) 8080 (http)
remote: Started DemoApplication in 15.156 seconds (JVM running for 17.209)
现在,您可以浏览到: http://<app-name>.rhcloud.com/manage/health
,您应该看到:
{"status": "UP",
}
登录到OpenShift网络帐户并导航到“ Applications
您应该会看到一个新帐户:
引擎盖下
为什么要DIY?
可以将Spring Boot应用程序部署到OpenShift上的Tomcat盒中。 但是目前没有Undertow和Java 8支持,因此选择了DIY。 DIY有局限性:例如,无法缩放。 但这是尝试和玩新事物的完美选择。
应用结构
该应用程序是常规的Spring Boot应用程序,可以使用http://start.spring.io进行引导。 使用的构建系统是Gradle,包装类型是Jar。
从Spring Boot 1.2开始,支持Undertow轻量级高性能Servlet 3.1容器。 为了使用Undertow代替Tomcat,必须将Tomcat依赖项与Undertow的依赖项交换:
buildscript {configurations {compile.exclude module: "spring-boot-starter-tomcat"}
} dependencies {compile("org.springframework.boot:spring-boot-starter-undertow")
}
OpenShift特定配置– application-openshift.properties
–当前包含日志记录配置:
logging.file=${OPENSHIFT_DATA_DIR}/logs/app.log
OpenShift action_hooks
OpenShift在部署过程中的特定位置执行动作挂钩脚本文件。 所有挂钩都放置在应用程序存储库的.openshift / action_hooks目录中。 文件必须是可执行的。 在Windows中,可以在Git Bash中使用以下命令:
git update-index --chmod=+x .openshift/action_hooks/*
部署应用程序
部署脚本下载Java 8和Gradle 2.2,创建一些目录。 下载Gradle的方法如下:
if [ ! -d $OPENSHIFT_DATA_DIR/gradle-2.2.1 ]thencd $OPENSHIFT_DATA_DIRwget https://services.gradle.org/distributions/gradle-2.2.1-bin.zipunzip gradle-2.2.1-bin.ziprm -f gradle-2.2.1-bin.zip
fi
运行脚本后,将在$OPENSHIFT_DATA_DIR
创建以下目录:
gradle gradle-2.2.1 jdk1.8.0_20 logs
此外,该脚本还会导出正确运行Java 8 / Gradle构建所需的几个环境变量。 GRADLE_USER_HOME
是最重要的一个,因为它设置了将存储所有Gradle运行时文件的主目录,包括用于构建应用程序的已下载依赖项。
deploy
脚本的最后一个命令是运行Gradle任务以创建一个jar存档,可以使用java -jar
commnad从命令行执行该存档(请参见下一段):
gradle bootRepackage
启动应用程序
deploy
脚本成功完成后, build
目录将包含一个组装了Spring Boot应用程序的jar。 该应用程序已启动,并绑定到OpenShift提供的服务器地址和端口。 另外,提供了概要文件名称,因此可以加载其他属性文件。 运行该应用程序的最终命令如下:
nohup java -Xms384m -Xmx412m -jar build/*.jar --server.port=${OPENSHIFT_DIY_PORT} --server.address=${OPENSHIFT_DIY_IP} --spring.profiles.active=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://www.javacodegeeks.com/2015/02/openshift-diy-build-spring-boot-undertow-application-gradle.html