<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          使用 Docker 部署 Spring Boot 項目,帶勁!!

          共 4666字,需瀏覽 10分鐘

           ·

          2020-11-27 00:01

          Java技術棧

          www.javastack.cn

          關注閱讀更多優(yōu)質(zhì)文章



          上一篇:年輕人的第一個 Docker 應用

          Docker 一次構建、處處運行及快速啟停的特性,在微服務架構中有著舉足輕重的地位,具體的概念性的東西就不介紹了,不懂的點擊這里閱讀 Docker 基礎教程。

          本篇棧長主要介紹下如何通過 IntelliJ IDEA、Maven 來操作 Docker 部署 Spring Boot 項目,這也是我們 Java 程序員最關心的開發(fā)實戰(zhà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
          ????????????????????

          ????????????????

          ????????????

          ????????

          ????


          你們還在用這個插件嗎?

          棧長從官方倉庫看到,這個插件官方已經(jīng)不維護了:

          所以這個插件我就不推薦大家使用了,而是推薦官方的另外一個插件: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
          ????????????

          ????????

          ????


          這個插件使用簡單,功能更強大。

          新插件地址:

          https://github.com/spotify/dockerfile-maven

          最新版插件的環(huán)境要求:

          • JDK 7+

          • Apache Maven 3.5.2+

          這個插件的牛逼之處在于:

          1、從插件名稱就可以知道,這個插件是基于 Dockerfile 文件進行構建 Docker 項目的,專注 Dockerfile 文件,所以需要一個 Dockerfile 文件,Dockerfile 也是構建 Docker 項目的基石。

          2、把 Docker 的構建過程集成到了 Maven 的構建過程之中,如果使用默認的配置,使用 mvn package 命令就能打包成一個 Docker 鏡像,使用 mvn deploy 命令就能推送到 Docker 倉庫。

          3、使我們的構建目標更明確,如我們先使用 mvn dockerfile:build 然后再 mvn dockerfile:tag,然后再 mvn dockerfile:push,也可以滿足同時構建再推送的場景,如:mvn dockerfile:build dockerfile:push,這都沒問題的。

          4、與 Maven 構建集成,我們可以在一個項目中依賴另外一個項目的 Docker 鏡像,Maven 將以正確的順序構建項目。當我們運行涉及多個服務的集成測試用例時,這很有用的。

          二、Docker 配置

          Dockerfile 是創(chuàng)建 Docker 鏡像的基本配置文件,本身是一個文本文件。

          插件默認加載位置為項目所在根目錄,因為我在上面的 Maven 插件配置中指明了路徑。所以,在 src/main/docker/ 目錄下添加一個 Dockerfile 文件:

          #?添加?Java?8?鏡像來源
          FROM?java:8

          #?添加參數(shù)
          ARG?JAR_FILE

          #?添加?Spring?Boot?包
          ADD?target/${JAR_FILE}?app.jar

          #?執(zhí)行啟動命令
          ENTRYPOINT?["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

          值得說一下的是,上面的 JAR_FILE 參數(shù)就是從 Docker Maven 插件中指定的構建參數(shù),這也是這個插件的強大之處,可以翻到文章上面去看一下。

          具體的 Dockerfile 文件細節(jié)比較多,這里就不展開詳細介紹了,后面我再開一篇單獨介紹,關注公眾號Java技術棧第一時間推送。

          三、添加測試接口

          添加一個測試接口,以便后面部署測試。

          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;

          /**
          ?*?微信公眾號:Java技術棧
          ?*/
          @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 基礎性的知識和搭建過程就不介紹了,不熟悉的可以關注公眾號Java技術棧,在后臺回復關鍵字 "boot" 閱讀我之前寫的系列教程。

          所有 Spring Boot 教程實戰(zhàn)源碼在下面?zhèn)€倉庫:

          https://github.com/javastacks/spring-boot-best-practice

          本篇所有實戰(zhàn)源碼到時也會全部同步到上面,大家 Star 一下吧!

          四、構建 Docker 鏡像

          配置了 Maven 插件和 Dockerfile 文件后就可以開始構建 Docker 鏡像了。

          上面也說了,Docker 構建過程已經(jīng)集成到了 Maven 的構建過程之中,那么可以直接使用 mvn package 就可以同時打包和構建 Docker 鏡像了。

          在 IDEA 中可以直接點擊插件對應的命令運行:

          插件會根據(jù) Dockerfile 文件構建,文件中有多少條命令,就分為幾個步驟構建,如果沒問題就會構建成功。

          五、IDEA 怎么操作 Docker?

          一旦我們創(chuàng)建了 Dockerfile 文件,IDEA 就會自動識別并提示我們創(chuàng)建 Docker 連接,當然,我們也可以調(diào)出 Services 面板進行手動創(chuàng)建。

          打開 IDEA 中的 Services 面板:

          然后點擊 Add service > Docker Connection 來添加一個 Docker 連接:

          創(chuàng)建完后會自動連接上,點擊展開會顯示 Docker 本地所有鏡像和容器:

          如上圖所示,就是我們剛構建的鏡像。

          六、創(chuàng)建并運行容器

          右擊上面的鏡像,選擇 "Create Container" 菜單來創(chuàng)建并運行一個容器。

          填寫相應的運行參數(shù),再點擊運行按鈕,容器即開始運行。

          然后在 Build Log 和 Log 面板中可以看到容器運行日志和應用程序運行日志:

          項目在 Docker 中運行起來了,然后再訪問下上面寫的測試接口:

          http://localhost:8080/docker/hello

          OK,到這里就部署并運行成功了。

          七、總結

          本文棧長使用 IntelliJ IDEA、Maven 用 Docker 部署了一個 Spring Boot 項目,雖然只是一個簡單的示例,但同時為了配合寫文章,全程硬是肝了幾個小時。

          本文只是一個簡單的示例,所以過程并不復雜,想要構建更加復雜的應用,我們需要學習 Dockerfile 文件的編寫,這個下期再分享吧,關注公眾號Java技術棧第一時間推送,不要走開。

          如果只是運行一個 Spring Boot 應用確實沒有必要用到 Docker,本文也是為了演示而上了 Docker。

          但在實際工作中,Docker 就很有用了,Docker 一次將應用代碼、JDK、環(huán)境變量、配置文件、以及其他配置信息都打包到一個鏡像里面了,一次構建,處處運行,所以再也不用擔心環(huán)境和配置問題了,開發(fā)測試運維都爽死。

          好了,本文就到這里了,后續(xù)棧長還會帶來更多 Docker 實用性的教程,比如 Docker 私庫的搭建及其他實用的玩法等,關注公眾號Java技術棧第一時間推送。

          本文所有實戰(zhàn)源碼已上傳到這個倉庫:

          https://github.com/javastacks/spring-boot-best-practice

          覺得不錯,在看、分享轉(zhuǎn)發(fā)一下,寫文章不易,需要你們的鼓勵,感謝各位老鐵們!

          版權申明:本文系公眾號 "Java技術棧" 原創(chuàng),原創(chuàng)實屬不易,轉(zhuǎn)載、引用本文內(nèi)容請注明出處,禁止抄襲、洗稿,請自重,尊重他人勞動成果和知識產(chǎn)權。






          關注Java技術棧看更多干貨



          戳原文,獲取精選面試題!
          瀏覽 59
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美高清无码在线观看 | 国产黄色视频哪里看 | 国产乱伦三级片导航 | 成人黄色片免费网站 | 奇米影视77777 |