新聞中心
這篇文章將為大家詳細(xì)講解有關(guān)Docker 中如何部署 Spring Boot 項(xiàng)目,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
成都創(chuàng)新互聯(lián)作為成都網(wǎng)站建設(shè)公司,專注網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì),有關(guān)企業(yè)網(wǎng)站制作方案、改版、費(fèi)用等問(wèn)題,行業(yè)涉及活動(dòng)板房等多個(gè)領(lǐng)域,已為上千家企業(yè)服務(wù),得到了客戶的尊重與認(rèn)可。
一、Maven 插件配置
首先在 Maven pom.xml 配置文件中加入 Docker 的 Maven 插件。
我看網(wǎng)上很多人還在用 docker-maven-plugin
插件:
docker
com.spotify
docker-maven-plugin
1.2.2
${docker.image.prefix}/${project.artifactId}
src/main/docker
/
${project.build.directory}
${project.build.finalName}.jar
你們還在用這個(gè)插件嗎?
棧長(zhǎng)從官方倉(cāng)庫(kù)看到,這個(gè)插件官方已經(jīng)不維護(hù)了:

所以這個(gè)插件我就不推薦大家使用了,而是推薦官方的另外一個(gè)插件:dockerfile-maven。
com.spotify
dockerfile-maven-plugin
1.4.13
default
build
push
javastack/${project.name}
${project.version}
${project.build.finalName}.jar
src/main/docker/Dockerfile
這個(gè)插件使用簡(jiǎn)單,功能更強(qiáng)大。
新插件地址:
https://github.com/spotify/dockerfile-maven
最新版插件的環(huán)境要求:
JDK 7+
Apache Maven 3.5.2+
這個(gè)插件的牛逼之處在于:
1、從插件名稱就可以知道,這個(gè)插件是基于 Dockerfile 文件進(jìn)行構(gòu)建 Docker 項(xiàng)目的,專注 Dockerfile 文件,所以需要一個(gè) Dockerfile 文件,Dockerfile 也是構(gòu)建 Docker 項(xiàng)目的基石。
2、把 Docker 的構(gòu)建過(guò)程集成到了 Maven 的構(gòu)建過(guò)程之中,如果使用默認(rèn)的配置,使用 mvn package
命令就能打包成一個(gè) Docker 鏡像,使用 mvn deploy
命令就能推送到 Docker 倉(cāng)庫(kù)。
3、使我們的構(gòu)建目標(biāo)更明確,如我們先使用 mvn dockerfile:build
然后再 mvn dockerfile:tag
,然后再 mvn dockerfile:push
,也可以滿足同時(shí)構(gòu)建再推送的場(chǎng)景,如:mvn dockerfile:build dockerfile:push
,這都沒(méi)問(wèn)題的。
4、與 Maven 構(gòu)建集成,我們可以在一個(gè)項(xiàng)目中依賴另外一個(gè)項(xiàng)目的 Docker 鏡像,Maven 將以正確的順序構(gòu)建項(xiàng)目。當(dāng)我們運(yùn)行涉及多個(gè)服務(wù)的集成測(cè)試用例時(shí),這很有用的。
二、Docker 配置
Dockerfile 是創(chuàng)建 Docker 鏡像的基本配置文件,本身是一個(gè)文本文件。
插件默認(rèn)加載位置為項(xiàng)目所在根目錄,因?yàn)槲以谏厦娴?Maven 插件配置中指明了路徑。所以,在 src/main/docker/ 目錄下添加一個(gè) Dockerfile 文件:
# 添加 Java 8 鏡像來(lái)源
FROM java:8
# 添加參數(shù)
ARG JAR_FILE
# 添加 Spring Boot 包
ADD target/${JAR_FILE} app.jar
# 執(zhí)行啟動(dòng)命令
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
值得說(shuō)一下的是,上面的 JAR_FILE
參數(shù)就是從 Docker Maven 插件中指定的構(gòu)建參數(shù),這也是這個(gè)插件的強(qiáng)大之處,可以翻到文章上面去看一下。
具體的 Dockerfile
文件細(xì)節(jié)比較多,這里就不展開(kāi)詳細(xì)介紹了,后面我再開(kāi)一篇單獨(dú)介紹,關(guān)注公眾號(hào)Java技術(shù)棧第一時(shí)間推送。
三、添加測(cè)試接口
添加一個(gè)測(cè)試接口,以便后面部署測(cè)試。
package cn.javastack.springboot.docker;
import org.springframework.boot.Banner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 微信公眾號(hào):Java技術(shù)棧
*/
@RestController
@SpringBootApplication
public class DockerApplication {
public static void main(String[] args) {
SpringApplication.run(DockerApplication.class);
}
@GetMapping("/docker/hello")
public String helloDocker() {
return "hello docker";
}
}
Spring Boot 基礎(chǔ)性的知識(shí)和搭建過(guò)程就不介紹了,不熟悉的可以關(guān)注公眾號(hào)Java技術(shù)棧,在后臺(tái)回復(fù)關(guān)鍵字 "boot" 閱讀我之前寫的系列教程。
所有 Spring Boot 教程實(shí)戰(zhàn)源碼在下面?zhèn)€倉(cāng)庫(kù):
https://github.com/javastacks/spring-boot-best-practice
本篇所有實(shí)戰(zhàn)源碼到時(shí)也會(huì)全部同步到上面,大家 Star 一下吧!
四、構(gòu)建 Docker 鏡像
配置了 Maven 插件和 Dockerfile 文件后就可以開(kāi)始構(gòu)建 Docker 鏡像了。
上面也說(shuō)了,Docker 構(gòu)建過(guò)程已經(jīng)集成到了 Maven 的構(gòu)建過(guò)程之中,那么可以直接使用 mvn package
就可以同時(shí)打包和構(gòu)建 Docker 鏡像了。
在 IDEA 中可以直接點(diǎn)擊插件對(duì)應(yīng)的命令運(yùn)行:


插件會(huì)根據(jù) Dockerfile 文件構(gòu)建,文件中有多少條命令,就分為幾個(gè)步驟構(gòu)建,如果沒(méi)問(wèn)題就會(huì)構(gòu)建成功。
五、IDEA 怎么操作 Docker?
一旦我們創(chuàng)建了 Dockerfile 文件,IDEA 就會(huì)自動(dòng)識(shí)別并提示我們創(chuàng)建 Docker 連接,當(dāng)然,我們也可以調(diào)出 Services 面板進(jìn)行手動(dòng)創(chuàng)建。
打開(kāi) IDEA 中的 Services 面板:

然后點(diǎn)擊 Add service > Docker Connection 來(lái)添加一個(gè) Docker 連接:

創(chuàng)建完后會(huì)自動(dòng)連接上,點(diǎn)擊展開(kāi)會(huì)顯示 Docker 本地所有鏡像和容器:

如上圖所示,就是我們剛構(gòu)建的鏡像。
六、創(chuàng)建并運(yùn)行容器
右擊上面的鏡像,選擇 "Create Container" 菜單來(lái)創(chuàng)建并運(yùn)行一個(gè)容器。

填寫相應(yīng)的運(yùn)行參數(shù),再點(diǎn)擊運(yùn)行按鈕,容器即開(kāi)始運(yùn)行。
然后在 Build Log 和 Log 面板中可以看到容器運(yùn)行日志和應(yīng)用程序運(yùn)行日志:


項(xiàng)目在 Docker 中運(yùn)行起來(lái)了,然后再訪問(wèn)下上面寫的測(cè)試接口:
http://localhost:8080/docker/hello

關(guān)于Docker 中如何部署 Spring Boot 項(xiàng)目就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。
分享題目:Docker中如何部署SpringBoot項(xiàng)目
轉(zhuǎn)載來(lái)源:http://www.ef60e0e.cn/article/gcoshg.html