基於Spring Boot和Spring Cloud實現微服務架構學習(六)-Docker應用

應用Docker部署

下面就介紹如何將之前的spring Boot項目部署在Docker上,首先,在應用根目錄下建立 Dockerfile 文件,以使用 Maven 構建爲例,選用 maven:3.3.3 官方鏡像,官方維護的 Maven 鏡像依賴於 Java 鏡像構建,所以我們不需要使用 Java 鏡像,具體內容如下:

[html] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. FROM maven:3.3.3  
  2.   
  3. ADD pom.xml /tmp/build/  
  4. RUN cd /tmp/build && mvn -q dependency:resolve  
  5.   
  6. ADD src /tmp/build/src  
  7.         #構建應用  
  8. RUN cd /tmp/build && mvn -q -DskipTests=true package \  
  9.         #拷貝編譯結果到指定目錄  
  10.         && mv target/*.jar /app.jar \  
  11.         #清理編譯痕跡  
  12.         && cd / && rm -rf /tmp/build  
  13.   
  14. VOLUME /tmp  
  15. EXPOSE 8080  
  16. ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]  

  • 因爲 Spring Boot 框架打包的應用是一個包含依賴的 jar 文件,內嵌了 Tomcat 和 Jetty 支持,所以我們只需要使用包含 Java 的 Maven 鏡像即可,不需要 Tomcat 鏡像。
  • 爲了減少鏡像大小,在執行 Maven 構建之後,清理了構建痕跡。
  • 在 Dockerfile 文件的最後,使用 ENTRYPOINT 指令執行啓動 Java 應用的操作。

構建 Docker 鏡像:

[html] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. docker build -t docker-demo-spring-boot .   //注意後面的 . 表示當前路徑下  

從鏡像啓動容器:

[html] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. docker run -d -p 8080:8080 docker-demo-spring-boot  

完成部署:

URL訪問,可通過docker ip查看應用的虛擬地址。

Docker Compose編排

Docker Compose是用於定義和組裝運行多容器分佈式應用的工具,它提供一個簡單的基於YAML語言的docker-compose.yml配置文件。 通常,我們使用docker定義和運行復雜的應用,使用docker compose,在一個文件裏定義多容器應用的啓動順序,起到服務編排的作用。

編寫 docker-compose.yaml 文件

[html] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. web:  
  2.   build: .  
  3.   ports:  
  4.     - "8080:8080"  
  5.   links:  
  6.     - mongodb:mongodb  
  7.   
  8. mongodb:  
  9.   image: daocloud.io/library/mongo:latest  
  10.   ports:  
  11.     - "27017:27017"  
這裏以MongoDB數據庫提供服務的demo,在該文件中,我們定於了兩個服務:

  • 基於我們應用構建的 docker-demo-java-mongo 鏡像,用來提供 Web 服務
  • 基於 DaoCloud 提供的 MongoDB 鏡像,提供存儲服務
  • 通過 links 爲 web 關聯 mongo 服務

啓動 Docker Compose

[html] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. docker-compose up  

瀏覽器訪問

以web應用爲訪問路徑,數據將關聯存儲到MongoDB上。

發佈了5 篇原創文章 · 獲贊 0 · 訪問量 9802
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章