10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

用 Jib 容器化 Java 应用程序

  • 2020-09-02
  • 本文字数:1105 字

    阅读完需:约 4 分钟

用Jib容器化Java应用程序

Jib是一个用于构建 Java 应用程序空间得到了节省并优化了 Docker 和 OCI 镜像的开源工具,它一直在不断添加新功能,以进一步改善开发和 CI/CD 的体验。其中的一些亮点包括 Jib 插件扩展框架、对流行应用程序框架的原生支持、CI/CD 性能的改进、以及使用Skaffold在本地 Kubernetes 上增强的开发体验。

Jib 插件扩展框架

Jib 真正的强大之处在于它能够以声明的方式将 Java 应用程序重新构建成优化了的 Docker 和 OCI 镜像,并应用容器最佳实践,而无需 Docker 守护进程。借助新的 Jib 插件扩展框架,用户现在可以扩展 Jib 来调整 Java 应用程序镜像的各个方面。扩展框架基于容器构建计划规范(Container Build Plan Specification),这是一个通用的、与工具无关的规范,可用于描述镜像的构建计划。Jib 核心团队已经发布了一些有用的扩展,比如GraalVM原生镜像扩展,可用于快速启动运行在容器中的 Java 应用程序。新的扩展可以作为 Maven 和 Gradle 的第三方插件来构建和贡献。

对应用程序框架的原生支持

现在,一些流行的应用程序框架(如Spring BootQuarkus)都获得了 Jib 的原生支持。对于 Spring Boot,Jib 中的打包容器化模式是通过容器化原始的瘦应用程序 JAR 而不是 Spring Boot JAR 来提供开箱即用的支持,后者往往不适合容器化。Jib 核心团队还发布了支持 Quarkus 的一方 JibMavenGradle扩展,从而可以完全控制如何配置和构建 Quarkus 镜像。请注意,这些扩展仍处于试验阶段,可能无法构建复杂的项目。

增强的 CI/CD 支持

由于 Jib 不依赖 Docker 守护进程,它可以创建和推送镜像,而无需下载相应的基础镜像。例如,一个典型的基于 Java 的 Dockerfile 将包含一个诸如FROM openjdk:11-jre-slim这样的行来指定基础镜像。如果 Docker 镜像缓存中没有这个基础镜像,Docker 守护程序就必须下载它,这是 CI/CD 环境中的一种典型情况。但是 Jib 有一些内置的智能功能,可以最大限度地避免下载基础镜像。将 Jib 集成到 CI/CD 管道中,可以减少构建时间,节省网络带宽和存储空间。

使用 Skaffold 提供本地 Kubernetes 开发支持

Skaffold 是一个优化了的工具,它提供了一种快速且可重复的本地 Kubernetes 开发工作流,现在可以与 Jib 集成。这种集成使 Skaffold 可以对 Java 镜像进行零配置自动同步。通过自动同步,Jib 可以将类文件更改和资源文件更改同步到正在运行的容器中,而无需重新构建和重新部署容器/舱室(Container/Pod)。请注意,该设置仅适用于分解了的非 WAR 应用程序,这是 Jib 的默认构建模式。此外,底层 Java 应用程序服务器还应支持重新加载或重新启动。


该项目的示例部分提供了一些使用 Jib 的入门示例。


原文链接:


Containerizing Java Applications with Jib


2020-09-02 14:392280

评论

发布
暂无评论
发现更多内容

《数据中心白皮书 2022》揭秘“东数西算”下数据中心高性能计算的六大趋势八大技术

GPU算力

互联网跨界造芯的“菊与刀”

IC男奋斗史

芯片 芯片行业思考

Git进阶系列 | 6. 交互式Rebase

俞凡

git 最佳实践

都2022了,不会还有人不会idea注释相关的配置吧,速进本文

芝士味的椒盐

Java IDEA 5月月更

2021-11-27【算法竞赛入门到进阶】

爱好编程进阶

程序员 后端开发

2021-3-29 【PTA】

爱好编程进阶

Java 程序员 后端开发

网站开发进阶(九)应用内存检测

No Silver Bullet

内存泄露 变量声明 5月月更

不造芯,不配做互联网巨头

IC男奋斗史

芯片行业思考

2020字节跳动秋招技术面试题:Kafka+反射

爱好编程进阶

Java 程序员 后端开发

SecurityContextHolder之策略模式源码分析

急需上岸的小谢

5月月更

开源字节系统白皮书

源字节1号

软件开发

【愚公系列】2022 年 05 月 二十三种设计模式(三)-建造者模式(Builder Pattern)

愚公搬代码

5月月更

Git进阶系列 | 5. Rebase vs Merge

俞凡

git 最佳实践

2021-03-26【PTA】

爱好编程进阶

程序员 后端开发

2021-3-20 【推箱子】

爱好编程进阶

Java 程序员 后端开发

电阻电路的等效变换 (Ⅱ)

謓泽

5月月更

Git进阶系列 | 3. 基于Pull Request实现更好的协作

俞凡

git 最佳实践

使用MyBatis-Plus代码生成器(数据库MySQL/Sqlite

芝士味的椒盐

Java mybatis 5月月更

nginx配置系列(五)限制连接数

乌龟哥哥

5月月更

[Day34]-[二叉树]有序链表转换二叉搜索树

方勇(gopher)

LeetCode 二叉树 数据结构和算法

如何登录到你的 WordPress 管理仪表板

海拥(haiyong.site)

5月月更

用户体验思维 7 大陷阱

龙国富

产品设计 UI UX 用户体验 产品设计与思考

毕业设计-设计电商秒杀系统

默光

秒杀架构设计 架构训练营5期

1篇文章全面总结2020年Java面试知识,掌握这些你也能进大厂!

爱好编程进阶

程序员 后端开发

DevOps系列之 —— DevOps概览(二)新型软件技术及交付模式

若尘

DevOps 5月月更

网站开发进阶(五)网站发布之道

No Silver Bullet

Apache tomcat IIS 5月月更 网站发布

Git进阶系列 | 4. 合并冲突

俞凡

git 最佳实践

13W字!银四巨作:Java进阶架构师核心手册

爱好编程进阶

Java 程序员 后端开发

maven构建docker镜像三部曲之三:推送到远程仓库(内网和阿里云)

程序员欣宸

Java Docker 5月月更

130道BATJM真题及解析:集合+Spring

爱好编程进阶

Java 程序员 后端开发

超级原始人系列盲盒即将上线,PlatoFarm赋能超多权益

西柚子

用Jib容器化Java应用程序_容器_Uday Tatiraju_InfoQ精选文章