还在用 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 的镜像。
还在用 Dockerfile 部署 Spring Boot?out 啦!试试谷歌的大杀器 Jib相关推荐
- Linix中Dockerfile部署Spring Boot项目
第一步:构建一个简单的web项目,保证其打包为jar包后能成功启动服务 第二步:使用docker pull java:8命令拉取JDK 8的镜像 第三步:将jar包上传到/root目录下面
- docker 打包镜像_Spring Boot2 系列教程(四十一)部署 Spring Boot 到远程 Docker 容器
不知道各位小伙伴在生产环境都是怎么部署 Spring Boot 的,打成 jar 直接一键运行?打成 war 扔到 Tomcat 容器中运行?不过据松哥了解,容器化部署应该是目前的主流方案. 不同于传 ...
- docker image设置jdk版本_Docker 部署 Spring Boot
作者:云天 镜像下载.域名解析.时间同步请点击 阿里巴巴开源镜像站 一.Docker 简介 Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口.它是目前最流行的 Linux 容 ...
- 快速使用 Docker 部署 Spring Boot 项目
如今 Docker 的使用已经非常普遍,特别是在一线互联网公司,使用 Docker 技术可以帮助企业快速水平扩展服务,从而达到弹性部署业务的能力.在云服务概念兴起之后,Docker 的使用场景和范围进 ...
- 一键部署 Spring Boot 到远程 Docker 容器,就是这么秀!
不知道各位小伙伴在生产环境都是怎么部署 Spring Boot 的,打成 jar 直接一键运行?打成 war 扔到 Tomcat 容器中运行?不过据松哥了解,容器化部署应该是目前的主流方案. 不同于传 ...
- 一键部署 Spring Boot 到远程 Docker 容器,就是这么秀
不知道各位小伙伴在生产环境都是怎么部署 Spring Boot 的,打成 jar 直接一键运行?打成 war 扔到 Tomcat 容器中运行?不过据松哥了解,容器化部署应该是目前的主流方案. 不同于传 ...
- springboot(十六):使用Jenkins部署Spring Boot
jenkins是devops神器,本篇文章介绍如何安装和使用jenkins部署Spring Boot项目 jenkins搭建 部署分为三个步骤: 第一步,jenkins安装 第二步,插件安装和配置 第 ...
- 使用 Spring Boot Operator 部署 Spring Boot 到 Kubernetes
大家好,我是DD. 2022年了,你们开始用Kubernetes了吗?那么Spring Boot应用要如何部署到Kubernetes里呢?下面给大家转了一篇不错的深度好文,一起来学习一下吧! 以下内容 ...
- Spring Boot 2 (四):使用 Docker 部署 Spring Boot
Docker 技术发展为微服务落地提供了更加便利的环境,使用 Docker 部署 Spring Boot 其实非常简单,这篇文章我们就来简单学习下. 首先构建一个简单的 Spring Boot 项目, ...
最新文章
- 关于权限系统的一些思考
- IA-32 Intel手册学习笔记(三)任务切换
- C#8.0宝藏好物Async streams
- C语言 FileStreaming fwritefread
- java基础知识---IO常用基础操作(二)
- layui时间选择30分钟为单位_layui 时间选择器实现季度选择器
- android ndk r10d.rar,[Android] 环境配置之Android Studio开发NDK
- 系统测试(功能测试、性能测试、负载测试、压力测试、兼容性测试、安全测试、健壮性测试、配置测试、可用性测试、文档测试)
- C#之AutoCAD图层样式定义
- 经典风险因子模型 对于中国股票市场定价解释能力初探
- 7-78 求e的近似值 (15 分)
- github上的html项目怎么运行,GitHub搭建简单的项目“Hello HTML”
- 无盘疑难杂症的处理和网络的设置(转)
- Python Selenium3.141+Win7(64位)+IEDriverServer(32位版本)+调用IE11卡死的解决
- 20189200余超 2018-2019-2 移动平台应用开发实践作项目代码分析
- 阿呆喵广告过滤 v1.9.0.1 官网版
- sklearn.metrics中的评估方法(MAE\MSE)
- 揭秘阿里VR电商购物
- IE-LAB网络实验室:思科ccie,sp ccie 思科ccnp CCIE与HCIE哪个更好找工作
- win11系统下word文档中鼠标指针消失解决方案