电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

Spring Boot Docker打包工具小結(jié)

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

Spring Boot Docker打包工具小結(jié)

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

Spring Boot Docker

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

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

根據(jù)上面的命令編寫一個能夠適應(yīng)多環(huán)境的Dockerfile:

# 引入 openjdk 鏡像 FROM adoptopenjdk/openjdk8 # 聲明作者 LABEL AUTHOR=felord OG=felord.cn # 掛載幾個有用的文件夾 比如日志 VOLUME ['/tmp','/logs'] # 聲明一個環(huán)境參數(shù)用來動態(tài)啟用配置文件 默認dev ENV ACTIVE=dev # 暴露端口 EXPOSE 8080 # 復制并修改應(yīng)用打包后的jar文件名稱 ADD /target/flyway-spring-boot-1.0.0.jar app.jar # 容器啟動時第一個運行的命令 用來啟動應(yīng)用 ENTRYPOINT ['java','-Djava.security.egd=file:/dev/./urandom','-Dspring.profiles.active=${ACTIVE}','-jar','app.jar']

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

Spring Boot Docker打包工具小結(jié)

docker 鏡像生命周期

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

spring-boot-maven-plugin

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

<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 進行構(gòu)建鏡像了。

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

Spotify Maven Plugin

Spotify Maven 插件是一個目前比較普遍的選擇。它要求應(yīng)用程序開發(fā)人員編寫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三個命令分別用來構(gòu)建、打標簽、發(fā)布到遠端私有倉庫,非常簡單。

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

Jib Maven Plugin

這個曾經(jīng)我在早些時候的一篇文章中已經(jīng)介紹過了,可以詳細了解一下。它是谷歌開源的OCI鏡像打包工具,可以用來打包Docker鏡像,大部分情況下已經(jīng)滿足需要。但是如果你要定制化的話還是不容易的,需要閱讀官方給的文檔。最開始的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>

優(yōu)點是不需要本地Docker環(huán)境,而且支持分層構(gòu)建、鏡像瘦身,上手容易;缺點是定制化比較困難。

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

標簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 股票入门基础知识_股票知识_股票投资大师_格雷厄姆网 | 游戏版号转让_游戏资质出售_游戏公司转让-【八九买卖网】 | 样品瓶(色谱样品瓶)百科-浙江哈迈科技有限公司 | 超声波_清洗机_超声波清洗机专业生产厂家-深圳市好顺超声设备有限公司 | 超声波气象站_防爆气象站_空气质量监测站_负氧离子检测仪-风途物联网 | 两头忙,井下装载机,伸缩臂装载机,30装载机/铲车,50装载机/铲车厂家_价格-莱州巨浪机械有限公司 | MES系统-WMS系统-MES定制开发-制造执行MES解决方案-罗浮云计算 | 热处理温控箱,热处理控制箱厂家-吴江市兴达电热设备厂 | 光谱仪_积分球_分布光度计_灯具检测生产厂家_杭州松朗光电【官网】 | 阿里巴巴诚信通温州、台州、宁波、嘉兴授权渠道商-浙江联欣科技提供阿里会员办理 | 河南砖机首页-全自动液压免烧砖机,小型砌块水泥砖机厂家[十年老厂] | 冷却塔风机厂家_静音冷却塔风机_冷却塔电机维修更换维修-广东特菱节能空调设备有限公司 | 塑木弯曲试验机_铜带拉伸强度试验机_拉压力测试台-倾技百科 | 六自由度平台_六自由度运动平台_三自由度摇摆台—南京全控科技 | 农业仪器网 - 中国自动化农业仪器信息交流平台 | 河南空气能热水器-洛阳空气能采暖-洛阳太阳能热水工程-洛阳润达高科空气能商行 | 耐磨陶瓷管道_除渣器厂家-淄博浩瀚陶瓷科技有限公司 | 经济师考试_2025中级经济师报名时间_报名入口_考试时间_华课网校经济师培训网站 | 绿叶|绿叶投资|健康产业_绿叶投资集团有限公司| 「阿尔法设计官网」工业设计_产品设计_产品外观设计 深圳工业设计公司 | 热缩管切管机-超声波切带机-织带切带机-无纺布切布机-深圳市宸兴业科技有限公司 | 专业生物有机肥造粒机,粉状有机肥生产线,槽式翻堆机厂家-郑州华之强重工科技有限公司 | 骁龙云呼电销防封号系统-axb电销平台-外呼稳定『免费试用』 | 带式过滤机厂家_价格_型号规格参数-江西核威环保科技有限公司 | 南溪在线-南溪招聘找工作、找房子、找对象,南溪综合生活信息门户! | 无缝钢管-聊城无缝钢管-小口径无缝钢管-大口径无缝钢管 - 聊城宽达钢管有限公司 | 菲希尔FISCHER测厚仪-铁素体检测仪-上海吉馨实业发展有限公司 | 聚合氯化铝-碱式氯化铝-聚合硫酸铁-聚氯化铝铁生产厂家多少钱一吨-聚丙烯酰胺价格_河南浩博净水材料有限公司 | 深圳美安可自动化设备有限公司,喷码机,定制喷码机,二维码喷码机,深圳喷码机,纸箱喷码机,东莞喷码机 UV喷码机,日期喷码机,鸡蛋喷码机,管芯喷码机,管内壁喷码机,喷码机厂家 | 选矿设备-新型重选设备-金属矿尾矿重选-青州冠诚重工机械有限公司 | 福尔卡(北京)新型材料技术股份有限公司| 保镖公司-私人保镖-深圳保镖公司【环宇兄弟保镖】| 咖啡加盟-咖啡店加盟-咖啡西餐厅加盟-塞纳左岸咖啡西餐厅官网 | 江苏全风,高压风机,全风环保风机,全风环形高压风机,防爆高压风机厂家-江苏全风环保科技有限公司(官网) | 切铝机-数控切割机-型材切割机-铝型材切割机-【昆山邓氏精密机械有限公司】 | 安徽合肥格力空调专卖店_格力中央空调_格力空调总经销公司代理-皖格制冷设备 | 不锈钢监控杆_监控立杆厂家-廊坊耀星光电科技有限公司 | 首页-浙江橙树网络技术有限公司 石磨面粉机|石磨面粉机械|石磨面粉机组|石磨面粉成套设备-河南成立粮油机械有限公司 | 艾乐贝拉细胞研究中心 | 国家组织工程种子细胞库华南分库 | 成都竞价托管_抖音代运营_网站建设_成都SEM外包-成都智网创联网络科技有限公司 | 运动木地板厂家,篮球场木地板品牌,体育场馆木地板安装 - 欧氏运动地板 |