這篇文章給大家分享的是將容器應(yīng)用于Spring Boot項目的方法,相信大部分人都還沒學(xué)會這個技能,為了讓大家學(xué)會,給大家總結(jié)了以下內(nèi)容,話不多說,一起往下看吧。
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:主機(jī)域名、虛擬空間、營銷軟件、網(wǎng)站建設(shè)、長島網(wǎng)站維護(hù)、網(wǎng)站推廣。
AtSea Shop是示例店面應(yīng)用程序,可以部署在不同的操作系統(tǒng)上,并且可以針對企業(yè)開發(fā)和運營環(huán)境進(jìn)行自定義。 在較早的帖子中,我討論了該應(yīng)用程序的體系結(jié)構(gòu)。 在本文中,我將介紹如何設(shè)置開發(fā)環(huán)境以調(diào)試在容器中運行的Java REST后端。
構(gòu)建REST應(yīng)用
我使用Spring Boot框架快速開發(fā)了REST后端,該后端管理AtSea Shop中使用的產(chǎn)品,客戶和訂單表。 該應(yīng)用程序利用Spring Boot的內(nèi)置應(yīng)用程序服務(wù)器,對REST接口的支持以及定義多個數(shù)據(jù)源的能力。 因為它是用Java編寫的,所以與基本操作系統(tǒng)無關(guān),并且可以在Windows或Linux容器中運行。 這使開發(fā)人員可以針對異構(gòu)體系結(jié)構(gòu)進(jìn)行構(gòu)建
項目設(shè)置
AtSea項目使用多階段構(gòu)建,這是一項新的Docker功能,它使我可以使用多個映像來構(gòu)建單個Docker映像,其中包含應(yīng)用程序所需的所有組件。多階段構(gòu)建使用Maven容器構(gòu)建應(yīng)用程序JAR文件。然后將JAR文件復(fù)制到Java開發(fā)工具包映像。因為Maven不包含在應(yīng)用程序中,所以這使圖像更加緊湊和有效。同樣,React店面客戶端構(gòu)建在Node映像中,并且還將編譯應(yīng)用程序添加到最終應(yīng)用程序映像中。
我使用Eclipse編寫了AtSea應(yīng)用程序。如果你需要有關(guān)配置IntelliJ或Netbeans進(jìn)行遠(yuǎn)程調(diào)試的信息,可以查看Docker Labs存儲庫。你還可以在AtSea應(yīng)用程序GitHub存儲庫中簽出代碼。
0
我通過克隆存儲庫構(gòu)建了應(yīng)用程序,并通過將Root Directory設(shè)置為項目并單擊Finish將項目導(dǎo)入到Eclipse中
文件>導(dǎo)入> Maven>現(xiàn)有Maven項目
自從我使用Spring Boot以來,我就利用spring-devtools在應(yīng)用程序中進(jìn)行遠(yuǎn)程調(diào)試。我必須將Spring Boot-devtools依賴項添加到pom.xml文件中。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
請注意,當(dāng)應(yīng)用程序完全打包為JAR時,將自動禁用開發(fā)人員工具。 為了確保在開發(fā)期間可以使用devtools,我在spring-boot-maven構(gòu)建插件中將<excludeDevtools>配置設(shè)置為false:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludeDevtools>false</excludeDevtools>
</configuration>
</plugin>
</plugins>
</build>
本示例使用Docker Compose文件,該文件為開發(fā)和調(diào)試特別需要的容器創(chuàng)建了簡化的構(gòu)建。
version: "3.1"
services:
database:
build:
context: ./database
image: atsea_db
environment:
POSTGRES_USER: gordonuser
POSTGRES_DB: atsea
ports:
- "5432:5432"
networks:
- back-tier
secrets:
- postgres_password
appserver:
build:
context: .
dockerfile: app/Dockerfile-dev
image: atsea_app
ports:
- "8080:8080"
- "5005:5005"
networks:
- front-tier
- back-tier
secrets:
- postgres_password
secrets:
postgres_password:
file: ./devsecrets/postgres_password
networks:
front-tier:
back-tier:
payment:
driver: overlay
Compose文件使用機(jī)密提供密碼和其他敏感信息(例如證書),而無需依賴環(huán)境變量。 盡管該示例使用PostgreSQL,但是應(yīng)用程序可以使用密碼連接到由Spring Boot數(shù)據(jù)源定義的任何數(shù)據(jù)庫。 從JpaConfiguration.java:
public DataSourceProperties dataSourceProperties() {
DataSourceProperties dataSourceProperties = new DataSourceProperties();
// Set password to connect to database using Docker secrets.
try(BufferedReader br = new BufferedReader(new FileReader("/run/secrets/postgres_password"))) {
StringBuilder sb = new StringBuilder();
String line = br.readLine();
while (line != null) {
sb.append(line);
sb.append(System.lineSeparator());
line = br.readLine();
}
dataSourceProperties.setDataPassword(sb.toString());
} catch (IOException e) {
System.err.println("Could not successfully load DB password file");
}
return dataSourceProperties;
}
還要注意,appserver打開端口5005進(jìn)行遠(yuǎn)程調(diào)試,并且build調(diào)用Dockerfile-dev文件來構(gòu)建打開了遠(yuǎn)程調(diào)試的容器。 這在入口點中設(shè)置,該入口點指定調(diào)試器的傳輸和地址。
ENTRYPOINT ["java",
"-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005","-jar",
"/app/AtSea-0.0.1-SNAPSHOT.jar"]
遠(yuǎn)程調(diào)試
要在應(yīng)用程序上啟動遠(yuǎn)程調(diào)試,請使用docker-compose-dev.yml文件運行compose。
docker-compose -f docker-compose-dev.yml up --build
Docker將構(gòu)建映像并啟動AtSea Shop數(shù)據(jù)庫和appserver容器。 但是,只有將Eclipse的遠(yuǎn)程調(diào)試器附加到應(yīng)用程序后,應(yīng)用程序才能完全加載。 要開始遠(yuǎn)程調(diào)試,請單擊運行>調(diào)試配置...。
選擇“遠(yuǎn)程Java應(yīng)用程序”,然后按新按鈕創(chuàng)建配置。 在“調(diào)試配置”面板中,為配置指定名稱,選擇AtSea項目,并將主機(jī)和端口的連接屬性設(shè)置為5005。單擊“應(yīng)用”>“調(diào)試”。
該應(yīng)用服務(wù)器將啟動:
appserver_1|2017-05-09 03:22:23.095 INFO 1 --- [main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
appserver_1|2017-05-09 03:22:23.118 INFO 1 --- [main] com.docker.atsea.AtSeaApp : Started AtSeaApp in 38.923 seconds (JVM running for 109.984)
要測試遠(yuǎn)程調(diào)試,請在ProductController.java上設(shè)置一個斷點,該斷點將返回產(chǎn)品列表。
你可以使用curl或用于發(fā)出HTTP請求的首選工具對其進(jìn)行測試:
curl -H "Content-Type: application/json" -X GET http://localhost:8080/api/product/
Eclipse將切換到調(diào)試透視圖,你可以在其中逐步執(zhí)行代碼。
AtSea Shop示例顯示了使用你和你的團(tuán)隊所熟悉的工具將容器用作常規(guī)開發(fā)環(huán)境的一部分是多么容易。 下載該應(yīng)用程序以嘗試使用容器進(jìn)行開發(fā),或者將其用作你自己的Spring Boot REST應(yīng)用程序的基礎(chǔ)。
上文描述的就是將容器應(yīng)用于Spring Boot項目的方法,具體使用情況還需要大家自己動手實驗使用過才能領(lǐng)會。如果想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
當(dāng)前名稱:如何將容器應(yīng)用于SpringBoot項目
本文鏈接:http://bm7419.com/article32/jdjdsc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、虛擬主機(jī)、域名注冊、企業(yè)建站、全網(wǎng)營銷推廣、電子商務(wù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)