小編給大家分享一下spring Boot應用如何通過Docker來實現構建、運行、發布流程,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
創新互聯公司成都網站建設按需求定制開發,是成都網站制作公司,為成都加固提供網站建設服務,有成熟的網站定制合作流程,提供網站定制設計服務:原型圖制作、網站創意設計、前端HTML5制作、后臺程序開發等。成都網站設計熱線:18982081108
1. Docker 簡介
Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然后發布到任何流行的 Linux 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口。Docker image 是用于運行容器化進程的方案,在本文中,我們將構建一個簡單的 Spring Boot 應用程序。
2.環境搭建
JDK 1.8+
Maven 3.0+
Docker 最新版。
3.用 Maven 構建項目
3.1 創建目錄結構
mkdir -p src/main/java/com/lidong/demo
在linux或者mac系統中。

3.2 創建 pom.xml 文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.lidong.demo</groupId>
<artifactId>lidong-spring-boot-demo</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.1.RELEASE</version>
<relativePath/>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<docker.image.prefix>springio</docker.image.prefix>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<configuration>
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>
</project>注意:
Spring Boot Maven plugin 提供了很多方便的功能:
1)它收集的類路徑上所有 jar 文件,并構建成一個單一的、可運行的jar,這使得它更方便地執行和傳輸服務。
2)它搜索的 public static void main() 方法來標記為可運行的類。
3)它提供了一個內置的依賴解析器,用于設置版本號以匹配 Spring Boot 的依賴。您可以覆蓋任何你想要的版本,但它會默認
選擇的 Boot 的版本集。
Spotify 的 docker-maven-plugin 插件是用于構建 Maven 的 Docker Image
1)imageName指定了鏡像的名字,本例為 springio/lidong-spring-boot-demo
2)dockerDirectory指定 Dockerfile 的位置
3)resources是指那些需要和 Dockerfile 放在一起,在構建鏡像時使用的文件,一般應用 jar 包需要納入。
4.編寫 第一個Spring Boot 應用
編寫一個簡單的 Spring Boot 應用 :
src/main/java/com/lidong/demo/SampleController.java:
package com.lidong.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* @項目名稱:lidong-dubbo
* @類名:SampleController
* @類的描述:
* @作者:lidong
* @創建時間:2017/2/19 上午9:34
* @公司:chni
* @QQ:1561281670
* @郵箱:lidong1665@163.com
*/
@Controller
@SpringBootApplication
public class SampleController {
@ResponseBody
@RequestMapping(value = "/")
String home(){
return "Hello Docker World";
}
public static void main(String[] args) {
SpringApplication.run(SampleController.class,"--server.port=8081");
}
}類用 @SpringBootApplication @RestController 標識,可用 Spring MVC 來處理 Web 請求。
@RequestMapping 將 / 映射到 home() ,并將”Hello Docker World” 文本作為響應。
main() 方法使用 Spring Boot 的 SpringApplication.run() 方法來啟動應用。
5.運行程序
5.1使用Maven命令
mvn package
運行:
java -jar target/lidong-spring-boot-demo-1.0-SNAPSHOT.jar
訪問項目
如果程序正確運行,瀏覽器訪問 http://localhost:8081/,可以看到頁面 “Hello Docker World.” 字樣。
5.2 使用IDEA 插件

6.將項目容器化
Docker 使用 Dockerfile 文件格式來指定 image 層,
創建文件 src/main/docker/Dockerfile:
FROM frolvlad/alpine-oraclejdk8:slim VOLUME /tmp ADD lidong-spring-boot-demo-1.0-SNAPSHOT.jar app.jar RUN sh -c 'touch /app.jar' ENV JAVA_OPTS="" ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]
解釋下這個配置文件:
VOLUME 指定了臨時文件目錄為/tmp。其效果是在主機 /var/lib/docker 目錄下創建了一個臨時文件,并鏈接到容器的/tmp。改步驟是可選的,如果涉及到文件系統的應用就很有必要了。/tmp目錄用來持久化到 Docker 數據文件夾,因為 Spring Boot 使用的內嵌 Tomcat 容器默認使用/tmp作為工作目錄
項目的 jar 文件作為 “app.jar” 添加到容器的
ENTRYPOINT 執行項目 app.jar。為了縮短 Tomcat 啟動時間,添加一個系統屬性指向 “/dev/urandom” 作為 Entropy Source
構建 Docker Image
執行構建成為 docker image:
mvn package docker:build
運行
運行 Docker Image
docker run -p 8081:8081 -t springio/lidong-spring-boot-demo

看到這個Spring的圖標。就以為這我們在docker 上發布Spring boot 程序已經完成。
接下來去訪問在瀏覽器訪問 http://localhost:8081/,可以看到頁面 “Hello Docker World.” 字樣。
看完了這篇文章,相信你對“spring Boot應用如何通過Docker來實現構建、運行、發布流程”有了一定的了解,如果想了解更多相關知識,歡迎關注創新互聯行業資訊頻道,感謝各位的閱讀!
新聞標題:springBoot應用如何通過Docker來實現構建、運行、發布流程
分享網址:http://www.yijiale78.com/article48/gddjhp.html
成都網站建設公司_創新互聯,為您提供企業網站制作、微信公眾號、面包屑導航、App開發、網站內鏈、搜索引擎優化
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯