带有DIY的Openshift上的Spring Boot / Java 8 / Tomcat 8
DIY墨盒是一種實(shí)驗(yàn)性墨盒,它提供了一種在OpenShift上測試不受支持的語言的方法。 它提供了最小限度的自由形式的支架,將墨盒的所有細(xì)節(jié)留給了應(yīng)用程序開發(fā)人員 。 這篇博客文章說明了結(jié)合了PostgreSQL服務(wù)的Spring Boot / Java 8 / Tomcat 8應(yīng)用程序的使用。
創(chuàng)建新的應(yīng)用程序
先決條件
在開始構(gòu)建應(yīng)用程序之前,我們需要安裝一個(gè)OpenShift免費(fèi)帳戶和客戶端工具。
步驟1:建立DIY應(yīng)用程式
要使用客戶端工具創(chuàng)建應(yīng)用程序,請鍵入以下命令:
rhc app create boot diy-0.1此命令使用DIY盒式磁帶創(chuàng)建應(yīng)用程序引導(dǎo) ,并將存儲(chǔ)庫克隆到引導(dǎo)目錄。
步驟2:將PostgreSQL墨盒添加到應(yīng)用
我們正在創(chuàng)建的應(yīng)用程序?qū)⑹褂肞ostgreSQL數(shù)據(jù)庫,因此我們需要向該應(yīng)用程序添加適當(dāng)?shù)暮惺酱艓?#xff1a;
rhc cartridge add postgresql-9.2 --app boot創(chuàng)建盒帶后,可以使用以下命令檢查其狀態(tài):
rhc cartridge status postgresql-9.2 --app boot步驟3:刪除模板應(yīng)用程序源代碼
OpenShift創(chuàng)建一個(gè)可以自由刪除的模板項(xiàng)目:
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:推送變更
基本模板隨時(shí)可以推送:
git push初始部署(構(gòu)建和應(yīng)用程序啟動(dòng))將花費(fèi)一些時(shí)間(最多幾分鐘)。 盡管在小型Gear上啟動(dòng)Spring Boot應(yīng)用程序可能要花2分鐘以上的時(shí)間,但隨后的部署要快一些:
Tomcat started on port(s): 8080/http Started Application in 125.511 seconds現(xiàn)在,您可以瀏覽到: http : //boot-yournamespace.rhcloud.com/manage/health ,您應(yīng)該看到:
{"status": "UP","database": "PostgreSQL","hello": 1 }您也可以瀏覽API。 要了解您擁有哪些選項(xiàng),請導(dǎo)航至應(yīng)用程序的根目錄。 您應(yīng)該看到資源根目錄,其中包含指向可用資源的鏈接:
{"_links" : {"person" : {"href" : "http://boot-yournamespace.rhcloud.com/people{?page,size,sort}","templated" : true}} }導(dǎo)航到http://boot-yournamespace.rhcloud.com/people應(yīng)該返回?cái)?shù)據(jù)庫中的所有人員。
第6步:添加詹金斯
使用詹金斯有一些優(yōu)勢。 其中之一是構(gòu)建是在自己的Gear中進(jìn)行的。 要使用Jenkins進(jìn)行構(gòu)建,OpenShift需要服務(wù)器和連接到應(yīng)用程序的Jenkins客戶端盒。 創(chuàng)建Jenkins應(yīng)用程序:
rhc app create ci jenkins并將Jenkins客戶端附加到應(yīng)用程序:
rhc cartridge add jenkins-client --app boot現(xiàn)在,您可以瀏覽到: http:// ci- .rhcloud.com并使用提供的憑據(jù)登錄。 當(dāng)您進(jìn)行下一個(gè)更改并將其推送時(shí),構(gòu)建將由Jenkins觸發(fā):
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.........而且,當(dāng)您觀察到構(gòu)建結(jié)果時(shí),該應(yīng)用程序在Jenkins上的啟動(dòng)速度會(huì)更快。
引擎蓋下
為什么要DIY?
可以將Spring Boot應(yīng)用程序部署到OpenShift上的Tomcat盒中。 但是目前沒有Tomcat 8和Java 8支持,因此選擇了DIY。 DIY有局限性:例如,無法縮放。 但這是嘗試和玩新事物的完美選擇。
應(yīng)用結(jié)構(gòu)
該應(yīng)用程序是常規(guī)的Spring Boot應(yīng)用程序,可以使用http://start.spring.io進(jìn)行引導(dǎo)。 使用的構(gòu)建系統(tǒng)是Maven,包裝類型是Jar。 使用Java 8的Tomcat 8。 Spring Boot默認(rèn)使用Tomcat 7,要對(duì)其進(jìn)行更改,添加了以下屬性:
<properties><tomcat.version>8.0.9</tomcat.version> </properties>之所以選擇Maven,是因?yàn)槟壳爸荒茉贠penShift上使用Gradle 1.6。 這是由于Gradle中的錯(cuò)誤所致。 Gradle 2.2解決了此問題。
Maven settings.xml
settings.xml文件非常重要,因?yàn)樗琈aven存儲(chǔ)庫的位置: ${OPENSHIFT_DATA_DIR}/m2/repository 。
在OpenShift上,寫權(quán)限僅在$ OPENSHIFT_DATA_DIR中。
數(shù)據(jù)源配置
該應(yīng)用程序使用Spring Data REST通過REST導(dǎo)出存儲(chǔ)庫。 所需的依賴項(xiàng)是:
- spring-boot-starter-data-jpa –存儲(chǔ)庫配置
- spring-boot-starter-data-rest –公開基于REST的存儲(chǔ)庫
- hsqldb –用于嵌入式數(shù)據(jù)庫支持
- postgresql –用于PostgreSQL支持。 由于當(dāng)前OpenShift使用PostgreSQL 9.2,因此使用了適當(dāng)?shù)尿?qū)動(dòng)程序版本
通用屬性– application.properties
默認(rèn)情況下(默認(rèn)配置文件src/main/resources/application.properties ),應(yīng)用程序?qū)⑹褂们度胧紿SQLDB并使用src/main/resources/data.sql 。 數(shù)據(jù)文件可以在HSQLDB和PostrgeSQL上運(yùn)行,因此我們不需要提供特定于平臺(tái)的文件(Spring Boot可以實(shí)現(xiàn))。
- spring.datasource.initialize = true必須使用spring.datasource.initialize = true ,因此Spring Boot會(huì)拾取數(shù)據(jù)文件并將其加載到數(shù)據(jù)庫中。
- spring.jpa.generate-ddl = true可確保將導(dǎo)出架構(gòu)。
OpenShift屬性– application-openshift.properties
特定于OpenShift的配置( src/main/resources/application-openshift.properties )允許使用PostgreSQL服務(wù)。 該配置使用OpenShift env變量來設(shè)置連接屬性:
- $ OPENSHIFT_POSTGRESQL_DB_HOST –用于數(shù)據(jù)庫主機(jī)
- $ OPENSHIFT_POSTGRESQL_DB_PORT –用于數(shù)據(jù)庫端口
- $ OPENSHIFT_APP_NAME –數(shù)據(jù)庫名稱
- $ OPENSHIFT_POSTGRESQL_DB_USERNAME –用于數(shù)據(jù)庫用戶名
- $ OPENSHIFT_POSTGRESQL_DB_PASSWORD –用于數(shù)據(jù)庫密碼
Spring允許直接使用${}語法在屬性中使用env變量,例如:
spring.datasource.username = ${OPENSHIFT_POSTGRESQL_DB_USERNAME}為了讓Spring Boot激活OpenShift配置文件,將spring.profiles.active屬性在啟動(dòng)時(shí)傳遞給應(yīng)用程序: java -jar <name>.jar --spring.profiles.active=openshift 。
登錄OpenShift
日志文件將存儲(chǔ)在$ OPENSHIFT_DATA_DIR中:
logging.file=${OPENSHIFT_DATA_DIR}/logs/app.log執(zhí)行器
執(zhí)行器的默認(rèn)管理上下文路徑為/ 。 更改為/manage ,因?yàn)镺penShift公開了/health端點(diǎn)本身,該端點(diǎn)涵蓋了Actuator的/health端點(diǎn)。
management.context-path=/manageOpenShift action_hooks
OpenShift在部署過程中的特定位置執(zhí)行動(dòng)作掛鉤腳本文件。 所有掛鉤都放置在應(yīng)用程序存儲(chǔ)庫的.openshift/action_hooks目錄中。 文件必須是可執(zhí)行的。 在Windows中,可以在Git Bash中使用以下命令:
git update-index --chmod=+x .openshift/action_hooks/*部署應(yīng)用程序
deploy腳本將下載Java和Maven,創(chuàng)建一些目錄并導(dǎo)出正確運(yùn)行Java 8 / Maven構(gòu)建所需的幾個(gè)環(huán)境變量。
部署的最后命令是運(yùn)行Maven目標(biāo):
mvn -s settings.xml clean install啟動(dòng)應(yīng)用程序
deploy腳本成功完成后, target目錄將包含一個(gè)組裝了Spring Boot應(yīng)用程序的jar。 該應(yīng)用程序已啟動(dòng),并綁定到OpenShift提供的服務(wù)器地址和端口。 另外,提供了概要文件名稱,因此將創(chuàng)建有效的數(shù)據(jù)源。 運(yùn)行該應(yīng)用程序的最終命令:
nohup java -Xms384m -Xmx412m -jar target/*.jar --server.port=${OPENSHIFT_DIY_PORT} --server.address=${OPENSHIFT_DIY_IP} --spring.profiles.active=openshift &停止應(yīng)用
stop腳本正在尋找Java進(jìn)程,并且找到它時(shí)…您知道會(huì)發(fā)生什么。
摘要
我對(duì)“自己動(dòng)手做”墨盒對(duì)OpenShift的評(píng)估感到非常滿意。 并非所有事情都像我預(yù)期的那樣順利,主要是由于小型Gear的內(nèi)存限制。 我花了一些時(shí)間弄清楚并進(jìn)行了正確的配置。 但是,帶有DIY的OpenShift值得嘗試一小會(huì)兒。 尤其是,完全免費(fèi)開始。
參考文獻(xiàn)
- 貫穿本文的項(xiàng)目源代碼可在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
- 創(chuàng)建本文時(shí)使用了一些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
總結(jié)
以上是生活随笔為你收集整理的带有DIY的Openshift上的Spring Boot / Java 8 / Tomcat 8的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最大的ddos攻击(十大ddos攻击)
- 下一篇: 让我们用jOOλ在Java 8中流式传输