一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

云服務器|WEB服務器|FTP服務器|郵件服務器|虛擬主機|服務器安全|DNS服務器|服務器知識|Nginx|IIS|Tomcat|

服務器之家 - 服務器技術 - 服務器知識 - Spring Boot Docker打包工具小結

Spring Boot Docker打包工具小結

2021-07-10 20:5651CTO 服務器知識

本文對幾種常見的Spring Boot Docker打包工具進行了簡單總結,感興趣的朋友跟隨小編一起看看吧

Spring Boot Docker打包工具小結

最近公司的應用準備容器化,因為幾十個應用從測試到發布太麻煩了,而且還會因為環境的因素導致部署中出現各種問題。為了在開發、測試、生產都能保持一致的環境,就引進了容器技術,先拿邊緣的項目試試水,積累下經驗,今天對幾種常見的Spring Boot Docker打包工具進行了簡單總結。

Spring Boot Docker

 

在Spring Boot應用中,我們可以約定不同的標識來定義不同的環境。例如 dev 表示開發環境、test表示測試環境,對應的配置文件為apppcation-dev.yaml、apppcation-test.yaml。我們通過聲明spring.profiles.active來激活對應的環境配置,例如激活dev環境時spring.profiles.active=dev。完整的啟動命令為:


  1. java -Djava.security.egd=file:/dev/./urandom -Dspring.profiles.active=dev -jar spring-boot-app.jar

根據上面的命令編寫一個能夠適應多環境的Dockerfile:


  1. # 引入 openjdk 鏡像
  2. FROM adoptopenjdk/openjdk8
  3. # 聲明作者
  4. LABEL AUTHOR=felord OG=felord.cn
  5. # 掛載幾個有用的文件夾 比如日志
  6. VOLUME ["/tmp","/logs"]
  7. # 聲明一個環境參數用來動態啟用配置文件 默認dev
  8. ENV ACTIVE=dev
  9. # 暴露端口
  10. EXPOSE 8080
  11. # 復制并修改應用打包后的jar文件名稱
  12. ADD /target/flyway-spring-boot-1.0.0.jar app.jar
  13. # 容器啟動時第一個運行的命令 用來啟動應用
  14. ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-Dspring.profiles.active=${ACTIVE}","-jar","app.jar"]

這樣打包的Docker鏡像就可以通過docker run添加額外的--env ACTIVE=test 來動態的改變環境。單純的編寫Dockerfile不方便我們DevOps。

Spring Boot Docker打包工具小結

docker 鏡像生命周期

我們需要能夠自動地構建、推送到倉庫、拉取鏡像、運行一系列流水線操作。好在市面上有很多工具來幫助我們實現這一過程。

spring-boot-maven-plugin

 

這個是Spring Boot官方的插件,在2.x的某個版本提供了Docker鏡像構建能力。


  1. <project>
  2. <build>
  3. <plugins>
  4. <plugin>
  5. <groupId>org.springframework.boot</groupId>
  6. <artifactId>spring-boot-maven-plugin</artifactId>
  7. <configuration>
  8. <image>
  9. <name>docker.repo.com/library/${project.artifactId}:${project.version}</name>
  10. <publish>true</publish>
  11. </image>
  12. <docker>
  13. <publishRegistry>
  14. <username>user</username>
  15. <password>secret</password>
  16. <url>https://docker.repo.com/v1/</url>
  17. <email>[email protected]</email>
  18. </publishRegistry>
  19. </docker>
  20. </configuration>
  21. </plugin>
  22. </plugins>
  23. </build>
  24. </project>

配置好Docker私倉后就可以通過mvn clean spring-boot:build-image 進行構建鏡像了。

這種方式好處就是無額外依賴,缺點就是需要從github下載構建元件,網絡如果不好就容易失敗。

Spotify Maven Plugin

 

Spotify Maven 插件是一個目前比較普遍的選擇。它要求應用程序開發人員編寫Dockerfile,并把Dockerfile放在項目src/main/docker目錄下。然后你就可以通過引入:


  1. <plugin>
  2. <groupId>com.spotify</groupId>
  3. <artifactId>dockerfile-maven-plugin</artifactId>
  4. <version>1.4.8</version>
  5. <configuration>
  6. <repository>repo.com/${project.artifactId}</repository>
  7. </configuration>
  8. </plugin>

這個插件提供了mvn dockerfile:build、mvn dockerfile:tag、mvn dockerfile:push三個命令分別用來構建、打標簽、發布到遠端私有倉庫,非常簡單。

這個是一個非常容易上手的插件,唯一的要求就是需要會編寫Dockerfile,對定制化要求高的可以使用這個。

Jib Maven Plugin

這個曾經我在早些時候的一篇文章中已經介紹過了,可以詳細了解一下。它是谷歌開源的OCI鏡像打包工具,可以用來打包Docker鏡像,大部分情況下已經滿足需要。但是如果你要定制化的話還是不容易的,需要閱讀官方給的文檔。最開始的Dockerfile如果使用JIb的話需要這樣配置:


  1. <plugin>
  2. <groupId>com.google.cloud.tools</groupId>
  3. <artifactId>jib-maven-plugin</artifactId>
  4. <version>3.0.0</version>
  5. <configuration>
  6. <from>
  7. <image>adoptopenjdk/openjdk8</image>
  8. </from>
  9. <to>
  10. <image>docker.repo.com/library/${project.artifactId}</image>
  11. <auth>
  12. <username>felord</username>
  13. <password>xxxxxx</password>
  14. </auth>
  15. <tags>
  16. <tag>${project.version}</tag>
  17. </tags>
  18. </to>
  19. <extraDirectories>
  20. <paths>
  21. <path>
  22. <from>target/${project.artifactId}-${project.version}.jar</from>
  23. <includes>*.jar</includes>
  24. <into>/app.jar</into>
  25. </path>
  26. </paths>
  27. </extraDirectories>
  28. <containerizingMode>packaged</containerizingMode>
  29. <container>
  30. <volumes>/tmp,/logs</volumes>
  31. <ports>
  32. <port>8080</port>
  33. </ports>
  34. <environment>
  35. <active>dev</active>
  36. </environment>
  37. <entrypoint>
  38. java,-Djava.security.egd=file:/dev/./urandom,-Dspring.profiles.active=${active},-jar,/app.jar
  39. </entrypoint>
  40. <creationTime>USE_CURRENT_TIMESTAMP</creationTime>
  41. </container>
  42. </configuration>
  43. </plugin>

優點是不需要本地Docker環境,而且支持分層構建、鏡像瘦身,上手容易;缺點是定制化比較困難。

到此這篇關于Spring Boot的 Docker打包插件哪個好用的文章就介紹到這了,更多相關Spring Boot Docker打包插件內容請搜索我們以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持我們!

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 丁香五香天堂网 | 俄罗斯bbbbbbbbb大片 | 久久成人伊人欧洲精品AV | 国产小视频网站 | 国产三级精品久久三级国专区 | 亚洲天堂视频在线观看免费 | 国产色网| 日韩大片在线播放 | 日本在线观看www鲁啊鲁视频 | 无套日出白浆在线播放 | 日韩精品免费看 | 粉嫩国产14xxxxx0000 | 亚州综合网 | 亚洲精品短视频 | 91亚洲精品久久91综合 | 欧美一区精品二区三区 | 深夜网站在线观看 | 性刺激欧美三级在线现看中文 | 2020年国产精品午夜福利在线观看 | 色狠狠狠狠狠香蕉 | 国产99re在线观看69热 | gay 男同志被捆绑茎 | 公园暴露娇妻小说 | 国产福利视频一区二区微拍视频 | 奇米色7777| 欧美男男gaygayxxx | 单亲乱l仑在线观看免费观看 | 欧美有码| 国产亚洲精品看片在线观看 | 欧美free激情野战hd | 国产第一福利影院 | 成人在线视频观看 | 国产精品久久一区 | 青青草国产免费久久久91 | 深夜网站在线观看 | 和直男装修工在工地啪 | 强行扒开美女大腿挺进 | japonensis中国东北老人 | 国产精品免费视频能看 | eeuss免费快捷 | 97福利社|