还在用 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等高性能硬件…

html form int,is_int, is_numeric, is_float, and HTML form validation

问题A select field on my HTML form may yield 1 to 5 (integers). Using is_int rejects it every time, because the $_POST[rating] is viewed as a string.After consulting the PHP Manual, it seems is_numeric() && !is_float() is the proper way to validate…

美国专利机构榜单:华为、京东方进前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;即直接公开暴露在互联网…

linux 发送http请求方式

第一种&#xff1a; 在浏览器访问&#xff1a; http://192.168.205.130:9000另外一种是命令行形式 curl 192.168.205.130:9000效果是一样的

华南理工大学计算机科学与技术,计算机科学与技术

摘要&#xff1a;As the coinductive data types in the framework of the category theory can be regarded as the carriers of final coalgebras for some coalgebraic functors,this paper presents the coalgebraic descriptions of the coinductive data types in progra…

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

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

Chrome 渲染流水线演化的未来

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

计算机的3类系统总线分别是_《深入理解计算机系统》读书笔记—第六章、存储器层次结构...

存储器系统是一个具有不同容量、成本和访问时间的存储设备的层次结构。CPU寄存器保存着最常用的数据。靠近CPU的小的、快速的高速缓存&#xff08;SRAM&#xff09;作为一部分存储在相对慢速的主存储器&#xff08;DRAM&#xff09;中数据和指令的缓冲区域。主存储器&#xff0…

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;就能够快速地开发出弹性高可用的后端系统。接下来我们利…