基於win10+Docker+idea的SpringBoot項目容器化部署

以前發過一些docker相關的文章,也發過一些Springboot相關的文章,今天這篇文章是教大家如何在win10下面基於docker構建Springboot項目

工具 & 環境

  • maven

  • jdk

  • idea

  • docker

  • win10

win10上安裝Docker

軟件安裝這個就不多說了,大家可以參考這個帖子 :鏈接如下:https://blog.csdn.net/hunan961/article/details/79484098 主要注意兩點就行了: 1.允許版本:64位Windows 10 Pro,專業版、企業版和教育版 2.開啓虛擬化。640?wx_fmt=png安裝完成後,看到一個馱着很多集裝箱的鯨魚沒,盤它!錯了 ,點擊啓動它。640?wx_fmt=pngdocker 安裝完默認的docker hub 網址是 hub.docker.com ,註冊一下,後面用到,比如,博主註冊的賬戶是492782442

創建一個Springboot項目並且整合docker

如圖:使用idea的傻瓜式操作創建一個Springboot項目640?wx_fmt=png項目創建好以後在pom裏面加入 docker-maven-plugin

  1. <properties>

  2. <docker.image.prefix>492782442</docker.image.prefix>

  3. </properties>

  4. <plugin>

  5. <groupId>com.spotify</groupId>

  6. <artifactId>docker-maven-plugin</artifactId>

  7. <version>1.0.0</version>

  8. <configuration>

  9. <imageName>${docker.image.prefix}/${project.artifactId}</imageName>

  10. <dockerDirectory>src/main/docker</dockerDirectory>

  11. <resources>

  12. <resource>

  13. <targetPath>/</targetPath>

  14. <directory>${project.build.directory}</directory>

  15. <include>${project.build.finalName}.jar</include>

  16. </resource>

  17. </resources>

  18. </configuration>

  19. </plugin>

這裏面指定了鏡像名稱以及docker腳本的執行目錄,創建docker目錄並編寫Dockerfile腳本

  1. FROM cantara/alpine-openjdk-jdk8

  2. COPY spring-boot-docker.jar /spring-boot-docker.jar

  3. ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/spring-boot-docker.jar"]

只有三行腳本代碼,爲防止看不懂貼一下Docker語法:

  • FROM 基礎鏡像base image

  • RUN 執行命令

  • ADD 添加文件

  • COPY 拷貝文件

  • CMD 執行命令

  • EXPOSE 執行命令

  • WORKDIR 指定路徑

  • MAINTAINER 維護者

  • ENV 設定環境變量

  • USER 指定路徑

  • VOLUME 邏輯卷掛載點mount point

並根據實際情況使用。 可以看到Dockerfile裏面有跟jar包有關的,那麼在執行Dockerfile之前,install一下項目,並且使用 finalName屬性指定打jar包後的包名,

  1. <build>

  2. <finalName>spring-boot-docker</finalName>

  3. ...

直接使用idea的maven插件即可,點擊install,構建jar包640?wx_fmt=png生成的jar包如圖所示640?wx_fmt=png

構建docker鏡像

學過maven語法和docker語法的都知道很多場景的命令方式,但是,有界面傻瓜操作不用不是傻嗎,來,點開idea的右側maven那一欄,Plugins下面有docker,展開點擊第一個640?wx_fmt=png構建日誌如下:

  1. [INFO]

  2. [INFO] ------------------------------------------------------------------------

  3. [INFO] Building spring-boot-docker 0.0.1-SNAPSHOT

  4. [INFO] ------------------------------------------------------------------------

  5. [INFO]

  6. [INFO] --- docker-maven-plugin:1.0.0:build (default-cli) @ spring-boot-docker ---

  7. [INFO] Using authentication suppliers: [ConfigFileRegistryAuthSupplier]

  8. [INFO] Copying D:\博\spring-boot-2.0-leaning\spring-boot-docker\target\spring-boot-docker.jar -> D:\博\spring-boot-2.0-leaning\spring-boot-docker\target\docker\spring-boot-docker.jar

  9. [INFO] Copying src\main\docker\Dockerfile -> D:\博\spring-boot-2.0-leaning\spring-boot-docker\target\docker\Dockerfile

  10. [INFO] Building image 492782442/spring-boot-docker

  11. Step 1/3 : FROM cantara/alpine-openjdk-jdk8


  12. ---> b250403334b3

  13. Step 2/3 : COPY spring-boot-docker.jar /spring-boot-docker.jar


  14. ---> c6466f2eafe9

  15. Step 3/3 : ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/spring-boot-docker.jar"]


  16. ---> Running in 03f67a5ff7de

  17. Removing intermediate container 03f67a5ff7de

  18. ---> c6aff6fdadd4

  19. ProgressMessage{id=null, status=null, stream=null, error=null, progress=null, progressDetail=null}

  20. Successfully built c6aff6fdadd4

  21. Successfully tagged 492782442/spring-boot-docker:latest

  22. [INFO] Built 492782442/spring-boot-docker

  23. [INFO] ------------------------------------------------------------------------

  24. [INFO] BUILD SUCCESS

  25. [INFO] ------------------------------------------------------------------------

  26. [INFO] Total time: 5.356 s

  27. [INFO] Finished at: 2019-05-23T17:55:29+08:00

  28. [INFO] Final Memory: 32M/330M

  29. [INFO] ------------------------------------------------------------------------

構建好的鏡像去哪看?docker本地倉庫啊,這裏再照顧對docker命令不熟悉的朋友,可以使用idea的界面去看 。先把界面調出來640?wx_fmt=png在界面點開連接之後,其他的都是傻瓜式交互了640?wx_fmt=png試試本地基於鏡像創建容器。在鏡像上點擊Create container640?wx_fmt=png填寫好端口映射之後,點擊Run 啓動,然後在idea裏面可以看到相關日誌,啓動成功,完美!640?wx_fmt=png那麼到這是不是就結束了呢?顯然不是,咱們只是在本地玩玩,遠程怎麼玩呢? 當然得把鏡像推到遠程倉庫啊! 回到我們之前說的 去hub.docker.com 註冊好了以後,創建 Repository640?wx_fmt=png怎麼理解呢,就跟你推送新項目到github一樣就行了。640?wx_fmt=png選擇公開的,私有的要錢創建不了!  這裏我們假設你們還是docker零基礎,使用idea的頁面進行操作, 鼠標右鍵鏡像後點擊push image640?wx_fmt=png640?wx_fmt=png太慢了不好看進度,不裝逼,直接用命令行了!640?wx_fmt=png果然命令行還是賊快640?wx_fmt=png完成!現在就可以在遠程機器上pull下來愉快的玩耍了!

推薦閱讀

徒手擼一個 Spring Boot 中的 Starter ,解密自動化配置黑魔法!

驚了!7 行代碼優雅地實現 Excel 文件導出功能?

技術經理:求求你,別再亂改數據庫連接池的大小了!

19條效率至少提高3倍的MySQL技巧

一個歷時五天的 Bug

JAVA葵花寶典的正確打開方式

640?wx_fmt=jpeg

關注一下,盡知JAVA事!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章