使用Docker進行Spring Boot開發(fā)指南_第1頁
使用Docker進行Spring Boot開發(fā)指南_第2頁
使用Docker進行Spring Boot開發(fā)指南_第3頁
使用Docker進行Spring Boot開發(fā)指南_第4頁
使用Docker進行Spring Boot開發(fā)指南_第5頁
免費預覽已結束,剩余1頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 PAGE 1使用 Docker 進行 Spring Boot 開發(fā)指南 PAGE 6使用 Docker 進行 Spring Boot 開發(fā)我們來看看如何將容器引入 Spring Boot 項目。這里,我們使用 Docker 來包含 Java REST 后端,遠離操作系統(tǒng)的后顧之憂。 HYPERLINK /dockersamples/atsea-sample-shop-app AtSea Shop 是一個能部署在不同操作系統(tǒng),可以在你的企業(yè)開發(fā)和操作環(huán)境定制的示例店鋪應用程序。在 HYPERLINK /2017/05/developing-spring-boot-app-docker-atse

2、a-demo-app/ h 之前的文章,我討論了應用程序的結構。在本文種,我將介紹如何設置開發(fā)環(huán)境以在容器中調試運行的 Java REST 后端。構建 REST 應用程序我使用 Spring Boot 框架快速開發(fā)在 AtSea 中管理產品、用戶和訂單表的 REST 后端。該應用程序Spring Boot 的內置應用程序服務器,支持 RESR 接口以及定義多個數(shù)據(jù)源的能力。因為它是 Java 寫的,所以它不用管基礎操作系統(tǒng),可以運行在 Windows 或 Linux 容器中。這允許開發(fā)者構建異構體系結構。項目設置AtSea 項目使用多階段構建,一種新的 Docker 功能,允許我使用多個鏡像(

3、image)構建單個 Docker 鏡像,其中包括應用程序需要的所有組建。多階段構建使用 Maven 容器來構建應用程序的 JAR 文件。然后將該 JAR 文件復制到 Java Development Kit 鏡像。這使得鏡像更加緊湊和高效,因為 Maven 沒有被包含在應用程序中。類似的,React 店鋪客戶端在一個 Node 鏡像中構建,編譯后的應用程序也被添加到最終的應用程序鏡像中。我使用 Eclipse 編寫 AtSea 應用程序。如果你需要 IntelliJ 或 Netbeans 的有關遠程調試的配置信息, 你可以查看該 HYPERLINK /docker/labs/tree/mas

4、ter/developer-tools/java-debugging Dicker Labs Repository。你也可以查看 HYPERLINK /dockersamples/atsea-sample-shop-app AtSea 應用程序的 Github repository。我通過克隆 repository 并通過將根目錄設置為項目并單擊完成將項目導入 Eclipse 來構建應用程序File Import Maven Existing Maven Projects因為我使用了 Spring Boot,所以我利用 spring-devtools 在應用程序中進行遠程調試。我不得不將Spr

5、ing Boot-devtools 依賴添加到 pom.xml 文件中。org.springframework.bootspring-boot-devtools請注意,當應用程序完全打包為 JAR 時,該開發(fā)者工具將被自動禁用。為了確保在開發(fā)過程中可以使用devtools,我在 spring-boot-maven 構建插件中將 配置設置為 false:org.springframework.bootspring-boot-maven-pluginfalse該示例使用 Decker Compose 文件,該文件創(chuàng)建了開發(fā)和調試所需容器的簡單構建。version: 3.1 services:dat

6、abase:build:context: ./database image: atsea_db environment:POSTGRES_USER: gordonuser POSTGRES_DB: atseaports:- 5432:5432networks:back-tier secrets:postgres_password appserver:build:context: .dockerfile: app/Dockerfile-dev image: atsea_appports:- 8080:8080- 5005:5005networks:front-tierback-tier secr

7、ets:postgres_password secrets:postgres_password:file: ./devsecrets/postgres_password networks:front-tier: back-tier: payment:driver: overlay該 Compose 文件使用 secrets 來提供密碼和其他如證書的敏感信息,而不用依賴于環(huán)境變量。雖然該示例使用 PostgreSQL,但應用程序可以使用 secrets 來連接到由 Spring Boot 數(shù)據(jù)源定義的任何數(shù)據(jù)庫。查看 JpaConfiguration.java:public DataSource

8、Properties 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

9、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;另外需要注意的是該 appserve

10、r 為遠程調試打開了 5005 端口,并且該構建調用 Dockerfile-dev 文件來構建開啟了遠程調試的容器。下面是在 Entrypoint 中的設置,制定了調試器的傳輸機制和地址:ENTRYPOINT java,-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005,-jar, /app/AtSea-0.0.1-SNAPSHOT.jar遠程調試要在應用程序上開始遠程調試,請使用 docker-compose-dev.yml 文件運行 compose。docker-compose -f docker-compo

11、se-dev.yml up -buildDocker 將構建鏡像并啟動 AtSea Shop 數(shù)據(jù)庫和 appserver 容器。但是,在 Eclipse 的遠程調試器連接到應用程序之前,應用程序將無法完全加載。要啟用遠程調試,單擊 Run Debug Configurations .選擇 Remote Java Application,然后按新建按鈕來創(chuàng)建配置。在調試配置面板中,設置配置名,選擇AtSea 項目并設置 port 和 port 的連接屬性為 5005。單擊 Apply Debug。appserver 將啟動:: Startedappserver_1|2017-05-09 03:

12、22:23.118 INFO 1 main com.docker.atsea.AtSeaAppAtSeaApp in 38.923 seconds (JVM running for 109.984)appserver_1|2017-05-09 03:22:23.095 INFO 1 main s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcatstarted on port(s): 8080 (http)要測試遠程調試,在 ProductController.java 返回產品列表的地方設置斷點。你可以使用 curl 或你更喜歡的工具來發(fā)出 HTTP 請求以進行測試:curl -H Content-T

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論