之前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相关推荐

  1. Linix中Dockerfile部署Spring Boot项目

    第一步:构建一个简单的web项目,保证其打包为jar包后能成功启动服务 第二步:使用docker pull java:8命令拉取JDK 8的镜像 第三步:将jar包上传到/root目录下面

  2. docker 打包镜像_Spring Boot2 系列教程(四十一)部署 Spring Boot 到远程 Docker 容器

    不知道各位小伙伴在生产环境都是怎么部署 Spring Boot 的,打成 jar 直接一键运行?打成 war 扔到 Tomcat 容器中运行?不过据松哥了解,容器化部署应该是目前的主流方案. 不同于传 ...

  3. docker image设置jdk版本_Docker 部署 Spring Boot

    作者:云天 镜像下载.域名解析.时间同步请点击 阿里巴巴开源镜像站 一.Docker 简介 Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口.它是目前最流行的 Linux 容 ...

  4. 快速使用 Docker 部署 Spring Boot 项目

    如今 Docker 的使用已经非常普遍,特别是在一线互联网公司,使用 Docker 技术可以帮助企业快速水平扩展服务,从而达到弹性部署业务的能力.在云服务概念兴起之后,Docker 的使用场景和范围进 ...

  5. 一键部署 Spring Boot 到远程 Docker 容器,就是这么秀!

    不知道各位小伙伴在生产环境都是怎么部署 Spring Boot 的,打成 jar 直接一键运行?打成 war 扔到 Tomcat 容器中运行?不过据松哥了解,容器化部署应该是目前的主流方案. 不同于传 ...

  6. 一键部署 Spring Boot 到远程 Docker 容器,就是这么秀

    不知道各位小伙伴在生产环境都是怎么部署 Spring Boot 的,打成 jar 直接一键运行?打成 war 扔到 Tomcat 容器中运行?不过据松哥了解,容器化部署应该是目前的主流方案. 不同于传 ...

  7. springboot(十六):使用Jenkins部署Spring Boot

    jenkins是devops神器,本篇文章介绍如何安装和使用jenkins部署Spring Boot项目 jenkins搭建 部署分为三个步骤: 第一步,jenkins安装 第二步,插件安装和配置 第 ...

  8. 使用 Spring Boot Operator 部署 Spring Boot 到 Kubernetes

    大家好,我是DD. 2022年了,你们开始用Kubernetes了吗?那么Spring Boot应用要如何部署到Kubernetes里呢?下面给大家转了一篇不错的深度好文,一起来学习一下吧! 以下内容 ...

  9. Spring Boot 2 (四):使用 Docker 部署 Spring Boot

    Docker 技术发展为微服务落地提供了更加便利的环境,使用 Docker 部署 Spring Boot 其实非常简单,这篇文章我们就来简单学习下. 首先构建一个简单的 Spring Boot 项目, ...

最新文章

  1. 关于权限系统的一些思考
  2. IA-32 Intel手册学习笔记(三)任务切换
  3. C#8.0宝藏好物Async streams
  4. C语言 FileStreaming fwritefread
  5. java基础知识---IO常用基础操作(二)
  6. layui时间选择30分钟为单位_layui 时间选择器实现季度选择器
  7. android ndk r10d.rar,[Android] 环境配置之Android Studio开发NDK
  8. 系统测试(功能测试、性能测试、负载测试、压力测试、兼容性测试、安全测试、健壮性测试、配置测试、可用性测试、文档测试)
  9. C#之AutoCAD图层样式定义
  10. 经典风险因子模型 对于中国股票市场定价解释能力初探
  11. 7-78 求e的近似值 (15 分)
  12. github上的html项目怎么运行,GitHub搭建简单的项目“Hello HTML”
  13. 无盘疑难杂症的处理和网络的设置(转)
  14. Python Selenium3.141+Win7(64位)+IEDriverServer(32位版本)+调用IE11卡死的解决
  15. 20189200余超 2018-2019-2 移动平台应用开发实践作项目代码分析
  16. 阿呆喵广告过滤 v1.9.0.1 官网版
  17. sklearn.metrics中的评估方法(MAE\MSE)
  18. 揭秘阿里VR电商购物
  19. IE-LAB网络实验室:思科ccie,sp ccie 思科ccnp CCIE与HCIE哪个更好找工作
  20. win11系统下word文档中鼠标指针消失解决方案

热门文章

  1. 二叉查找树 java代码实现
  2. html怎么设计自动出现提示的数据列表?怎么设计数据列表像百度一样怎么随用户输入而更新
  3. C++ vector用法
  4. 聊聊我们在业务链路升级中做的数据洞察
  5. 拒绝双写:巧用Lindorm数据订阅
  6. 支付宝放出数字化经营新神器,可提升商家60%消费频次
  7. 一文了解阿里云CDN HTTP2.0
  8. 基于MaxCompute的拉链表设计
  9. 如何保障研发质量不踩坑?阿里技术专家教你几招
  10. 你想知道的容器混合云问题,答案都在这里!