还在用 Dockerfile 部署 Spring Boot?out 啦!试试谷歌的大杀器 Jib

在这里插入图片描述
之前gblfy和大家分享过一篇将 Spring Boot 项目部署到远程 Docker 上的文章:
一键部署 Spring Boot 到远程 Docker 容器

但是这种部署有一个问题,就是一个小小的 helloworld 构建成镜像之后,竟然都有 660 MB+,这就有点过分了;而且这种方式步骤繁琐,很多人看了头大。

因此gblfy今天想再和大家聊一聊另外一种方案 Jib,这是谷歌开源的一个容器化运行方案,使用它我们将 Spring Boot 进行容器化部署只要两步:

第一步配置 Maven Plugin
第二步构建
我们一起来看看。

Jib

在之前那篇文章中,我们将 Spring Boot 项目进行容器化部署,要求开发人员要有一定的 Docker 技能作为支撑,然而在实际开发中,并非每个人都是 Docker 专家,或者说会用 Docker。有鉴于此,Google 搞出来一个 Jib,使 Spring Boot 容器化部署变得更加简便,开发人员可以不需要任何 Docker 相关的技能,就能将 Spring Boot 项目构建成 Docker 中的镜像,而且还可以“顺便”将镜像 push 到 register 上,极大的简化了部署过程。
Jib 使用 Java 开发,使用也非常简单,可以作为 Maven 或者 Gradle 的插件直接集成到我们的项目中。它利用镜像分层和注册表缓存来实现快速、增量的构建。Jib 会自动读取项目的构建配置,代码组织到不同的层(依赖项、资源、类)中,然后它只会重新构建和推送发生变更的层。在项目进行快速迭代时,Jib 只将发生变更的层推送到 registers 来缩短构建时间。

好了,大致了解了 Jib 之后,接下来我们来看看 Jib 要怎么使用。

准备工作

Jib 可以直接将构建好的镜像 push 到 registers 上,如果公司有自己的私有镜像站的话,可以直接推送到私有镜像站上,本文我就将构建好的镜像推送到官方的 Docker Hub 上,因此需要大家提前准备一个 Docker Hub 的账号,账号大家可以直接去 Docker Hub 上面注册(https://hub.docker.com/),大家要是对 Docker Hub 这些东西不了解,可以在公众号后台回复 docker,获取松哥自制的 Docker 教程。
参考博文:
注册docker hub账号https://gblfy.blog.csdn.net/article/details/103438130

牛刀小试

首先我们来创建一个 Spring Boot 工程,创建时只需要添加一个 Web 依赖即可:
项目创建成功后,添加一个 HelloController 用来做测试:

@RestController
public class HelloController {@GetMapping("/")public String hello() {return "hello google jib";}
}

然后,在 pom.xml 中添加上 Jib 的插件,如下:

<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><plugin><groupId>com.google.cloud.tools</groupId><artifactId>jib-maven-plugin</artifactId><version>1.7.0</version><configuration><from><image>openjdk:alpine</image></from><to><image>docker.io/gblfy02/dockerjib</image><tags><tag>v1</tag></tags><auth><username>gblfy02</username><password>你的密码</password></auth></to></configuration><executions><execution><phase>package</phase><goals><goal>build</goal></goals></execution></executions></plugin></plugins></build>

关于这段配置,我说如下几点:

首先就是版本号的问题,我这里使用的是 1.7.0 ,网上有的教程比较老,用的 0.x 的版本,老的版本在配置 Docker 认证的时候非常麻烦,所以版本这块建议大家使用当前最新版。
from 中的配置表示本镜像构建所基于的根镜像为 openjdk:alpine
to 中的配置表示本镜像构建完成后,要发布到哪里去,如果是发布到私有镜像站,就写自己私有镜像站的地址,如果是发布到 Docker Hub 上,就参考我这里的写法 docker.io/gblfy02/dockerjib,其中 gblfy02表示你在 Docker Hub 上注册的用户名,dockerjib 表示你镜像的名字,可以随意取。
tags 中配置的是自己镜像的版本。
auth 中配置你在 Docker Hub 上的用户名/密码。
executions 节点中的就是常规配置了,我就不再多说了。
配置完成后,在命令行执行如下命令将当前下项目构建成一个 Docker 镜像并 push 到 Docker Hub:

1
mvn compile jib:build
构建完成后,我们在 Docker Hub 上就能看到自己的镜像了:
在这里插入图片描述
接下来,启动 Docker ,在 Docker 中执行如下命令拉取镜像下来并运行:

 docker run -d --name mydockerjib -p 80:80 docker.io/gblfy02/dockerjib:v1

启动成功后,我们在浏览器中就可以直接访问我们刚才的 Spring Boot 项目中的 hello 接口了:

在这里插入图片描述
是不是很方便?比我第一次给大家介绍的方案要方便很多。

注意

这种方式是将项目构建成镜像后并 push 到 registers 上,这种构建方式不需要你本地安装 Docker,如果你需要在本地运行镜像,那当然需要 Docker,单纯的构建是不需要 Docker 环境的。

本地构建
如果你电脑本地刚好安装了 Docker ,有 Docker 环境,那么也可以将项目构建成本地 Docker 的镜像。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/522519.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

常见的Hadoop十大应用误解

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 大数据架构师本文链接&#xff1a;https://www.jianshu.com/p/08255fa980e4Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下&#xff0c;开发分布式程序。充分利用集群的威力…

解析DataWorks数据集成中测试连通性失败问题

摘要&#xff1a; 大家好&#xff0c;这里和大家分享的是DataWorks数据集成中测试连通性失败的排查思路。与测试连通性成功与否的相关因素有很多&#xff0c;本文按照多个因素逐步排查&#xff0c;最终解决问题&#xff0c;希望大家以后再遇到此类问题&#xff0c;请参考此文&a…

带有下标的赋值维度不匹配_不稳定的期权时间价值

教科书上的期权公式&#xff1a;期权价格内在价值时间价值。这是个静态的表述&#xff0c;假设标的、波动率在到期前不在变化。实际上&#xff0c;在存续期间&#xff0c;这块时间价值将会受到“方向、波动率、时间”等维度影响。期权作为时间消耗性金融衍生品&#xff0c;若期…

Kubernetes的Device Plugin设计解读

摘要&#xff1a; Kubernetes的生态地位已经确立&#xff0c;可扩展性将是其发力的主战场。异构计算作为非常重要的新战场&#xff0c;Kubernetes非常重视。而异构计算需要强大的计算力和高性能网络&#xff0c;需要提供一种统一的方式与GPU、FPGA、NIC、InfiniBand等高性能硬件…

美国专利机构榜单:华为、京东方进前20名;印度巨头信实与微软结盟;三星发布 1.08 亿像素传感器,小米参与合作……...

关注并标星星CSDN云计算极客头条&#xff1a;速递、最新、绝对有料。这里有企业新动、这里有业界要闻&#xff0c;打起十二分精神&#xff0c;紧跟fashion你可以的&#xff01;每周三次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go go 特斯联完成20亿元C1轮融资&a…

本地安装Docker

docker官网&#xff1a;https://hub.docker.com/?overlayonboarding

阿里云上Kubernetes集群联邦

摘要&#xff1a; kubernetes集群让您能够方便的部署管理运维容器化的应用。但是实际情况中经常遇到的一些问题&#xff0c;就是单个集群通常无法跨单个云厂商的多个Region&#xff0c;更不用说支持跨跨域不同的云厂商。这样会给企业带来一些担忧&#xff0c;如何应对可用区级别…

边缘检测robert原理_在操作机器视觉检测过程中,遇到检测精度的难题怎么办?_西旺科技...

随着自动化行业发展&#xff0c;机器视觉技术的应用已经十分广泛。但是在一些机器视觉检测项目中&#xff0c;很多客户遇到了检测精度的难题。例如&#xff1a;检测加工零件的外形尺寸、内外径&#xff0c;要求精度到10um。目前很多配置选择500万的相机&#xff0c;理论上是可以…

引以为戒,特斯拉Kubernetes控制台被黑客攻击

摘要&#xff1a; 特斯拉公司惨遭“毒手”是因为其Kubernetes平台没有设置密码保护。 点此查看原文&#xff1a;http://click.aliyun.com/m/43609/ 几个月前RedLock公司工作人员发现&#xff1a;数百个Kubernetes管理控制台无需密码即可访问&#xff0c;即直接公开暴露在互联网…

来华30载,这些都是Oracle的神来之笔……

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者|刘晶晶出色的数据掌控可以为企业带来极大的业务领先与竞争优势&#xff0c;这一点毋庸置疑&#xff0c;尽管在面对海量数据管理时依然会出现诸多问题与挑战。如此说来那些在数据管理方面战略到位的企业们究竟有何杀手锏&#x…

Chrome 渲染流水线演化的未来

摘要&#xff1a;前段时间我写了一篇文章浏览器渲染流水线解析与网页动画性能优化&#xff0c;对目前 60 左右版本的 Chrome 的渲染流水线进行解析&#xff0c;文末也讨论了当前渲染流水线的一些不足和未来演化的方向。 当前的渲染流水线过于复杂和冗长&#xff0c;特别是对于非…

iOS Mach异常和signal信号

摘要&#xff1a; 本着探究下iOS Crash捕获的目的&#xff0c;学习了下Crash捕获相关的Mach异常和signal信号处理&#xff0c;记录下相关内容&#xff0c;并提供对应的测试示例代码。Mach为XNU的微内核&#xff0c;Mach异常为最底层的内核级异常&#xff0c;在iOS系统中&#x…

怎样清除手机中的html文件夹,怎么彻底清除手机APP卸载后的残留文件夹 能删与不能删文件名...

手机里的文件和手机下载了app之后&#xff0c;即使卸载&#xff0c;也很容易有垃圾残留&#xff0c;而且占用的空间还挺多&#xff0c;但是根本不知道哪些是垃圾&#xff0c;要怎么清除这些垃圾&#xff1f;  一般清理垃圾软件&#xff0c;如360&#xff0c;腾讯管家等可以清…

Kubernetes要成为一个企业友好平台,到底还缺啥?

戳蓝字“CSDN云计算”关注我们哦&#xff01;Kubernetes的崛起令人惊叹。在短短几年时间内&#xff0c;它已经从一个由一群云原生开发者倡导的开源项目转变为由三家主要云服务提供商推广的标准运维平台。由于应用程序工作负载从VM转移到容器&#xff0c;Kubernetes已成为自动化…

局域网设置_局域网设置

把路由连好后,在2台机上分本地网络-(TCP/IP)里,别输入同一IP段就可以了例如:192.168.1.2255.255.255.0192.168.1.3255.255.255.0上面说的只是通过连接好路由后,不考虑上网状况,只是电脑对连可以打游戏和互传东西的方法以下是从设置路由到设置机器从而能上网和互连的过程:打开一…

10分钟上线 - API网关 + 函数计算实现图片处理服务

摘要&#xff1a; 阿里云函数计算服务&#xff08;FunctionCompute&#xff0c;FC&#xff09;是一个事件驱动的全托管计算服务。通过函数计算与云端各个服务的广泛集成&#xff0c;开发者只需要编写函数代码&#xff0c;就能够快速地开发出弹性高可用的后端系统。接下来我们利…

Spring Boot2 整合 MyBatis 多数据源

pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0…

如何利用阿里云打造感知零售平台

摘要&#xff1a; 一、背景介绍所谓感知零售是指的根据店铺顾客的情绪变化以及顾客在店铺内对商品货架停留位置来判断顾客对商品感兴趣程度&#xff0c;实时在线调整营销策略。帮助企业第一时间掌握顾客感受&#xff0c;第一时间下发营销策略&#xff0c;第一时间得到营销效果反…

Spark精华问答 | 怎么运行Spark?

戳蓝字“CSDN云计算”关注我们哦&#xff01;为什么要学习Spark&#xff1f;作为一个用来实现快速而通用的集群计算的平台。扩展广泛使用的MapReduce计算模型&#xff0c;而且高效地支持更多的计算模式&#xff0c;包括交互式查询和流处理。Spark的一个重要特点就是能够在内存中…

mac抹掉磁盘重装系统未能与服务器取得联系_【工具】mac笔记本rm -rf 后 如何恢复删除的文件...

本来是要cp -rf 到另一个地方的&#xff0c;然后用git管理起来的。当时不知道怎么了&#xff0c;可能是最近加班多了直接执行了rm -rf 。这种一般是可以恢复的就是要来回折腾&#xff0c;不过也没办法只有折腾了&#xff0c;写了几天的内容可不想再重写一边~这里做一下恢复的记…