做网站有什么要求,使用cn域名做网站的多吗,房屋设计装修网站,卖货平台有哪些之前gblfy和大家分享过一篇将 Spring Boot 项目部署到远程 Docker 上的文章#xff1a; 一键部署 Spring Boot 到远程 Docker 容器
但是这种部署有一个问题#xff0c;就是一个小小的 helloworld 构建成镜像之后#xff0c;竟然都有 660 MB#xff0c;这就有点过分了… 之前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 的插件如下
buildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/pluginplugingroupIdcom.google.cloud.tools/groupIdartifactIdjib-maven-plugin/artifactIdversion1.7.0/versionconfigurationfromimageopenjdk:alpine/image/fromtoimagedocker.io/gblfy02/dockerjib/imagetagstagv1/tag/tagsauthusernamegblfy02/usernamepassword你的密码/password/auth/to/configurationexecutionsexecutionphasepackage/phasegoalsgoalbuild/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 的镜像。