久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

Spring Boot Docker打包工具小結

瀏覽:2日期:2023-07-15 16:26:53

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。完整的啟動命令為:

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

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

# 引入 openjdk 鏡像 FROM adoptopenjdk/openjdk8 # 聲明作者 LABEL AUTHOR=felord OG=felord.cn # 掛載幾個有用的文件夾 比如日志 VOLUME ['/tmp','/logs'] # 聲明一個環境參數用來動態啟用配置文件 默認dev ENV ACTIVE=dev # 暴露端口 EXPOSE 8080 # 復制并修改應用打包后的jar文件名稱 ADD /target/flyway-spring-boot-1.0.0.jar app.jar # 容器啟動時第一個運行的命令 用來啟動應用 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鏡像構建能力。

<project> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <image> <name>docker.repo.com/library/${project.artifactId}:${project.version}</name> <publish>true</publish> </image> <docker> <publishRegistry><username>user</username><password>secret</password><url>https://docker.repo.com/v1/</url><email>user@example.com</email> </publishRegistry> </docker> </configuration> </plugin> </plugins> </build> </project>

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

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

Spotify Maven Plugin

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

<plugin> <groupId>com.spotify</groupId> <artifactId>dockerfile-maven-plugin</artifactId> <version>1.4.8</version> <configuration> <repository>repo.com/${project.artifactId}</repository> </configuration> </plugin>

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

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

Jib Maven Plugin

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

<plugin> <groupId>com.google.cloud.tools</groupId> <artifactId>jib-maven-plugin</artifactId> <version>3.0.0</version> <configuration> <from> <image>adoptopenjdk/openjdk8</image> </from> <to> <image>docker.repo.com/library/${project.artifactId}</image> <auth> <username>felord</username> <password>xxxxxx</password> </auth> <tags> <tag>${project.version}</tag> </tags> </to> <extraDirectories> <paths> <path> <from>target/${project.artifactId}-${project.version}.jar</from> <includes>*.jar</includes> <into>/app.jar</into> </path> </paths> </extraDirectories> <containerizingMode>packaged</containerizingMode> <container> <volumes>/tmp,/logs</volumes> <ports> <port>8080</port> </ports> <environment> <active>dev</active> </environment> <entrypoint> java,-Djava.security.egd=file:/dev/./urandom,-Dspring.profiles.active=${active},-jar,/app.jar </entrypoint> <creationTime>USE_CURRENT_TIMESTAMP</creationTime> </container> </configuration> </plugin>

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

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

標簽: Spring
相關文章:
主站蜘蛛池模板: 国产精品毛片一区二区三区 | 精品国产一区二区三区久久久 | 中文字幕一区在线观看 | 玖玖在线精品 | 久热免费在线 | 欧美在线视频不卡 | 亚洲精品影院 | 大香一网 | 精品欧美黑人一区二区三区 | 伊人免费观看视频 | 在线观看国产一级片 | 久久久久香蕉视频 | 精品中文字幕在线观看 | 黄色精品视频 | 久久久激情视频 | 亚洲欧美国产精品久久久久 | 日韩在线成人 | www在线观看国产 | 欧日韩毛片 | 欧美一级精品片在线看 | 午夜资源 | 欧美专区在线 | 国产 在线 | 日韩 | www.久久| 二区欧美| 久久99国产精品 | 精品久久久久av | 国产精品一区二区三区在线播放 | 污视频免费网站观看 | 欧美国产综合 | 狠狠骚 | 一区免费 | 亚洲三级视频 | 亚洲嫩草 | 日日爱夜夜爽 | 久久精品中文字幕 | 成人在线 | 国产精品久久久久国产a级 欧美日本韩国一区二区 | 色婷婷激情 | 免费欧美一级 | 国产成人欧美一区二区三区的 |