写点什么

用 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:392076

评论

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

架构实战营模块六作业

maybe

阿里P8熬了一个月肝出这份32W字Java面试手册,在Github标星31K+

编程susu

Java 编程 程序员 计算机 技术宅

架构实战营模块一

WolvesLeader

架构实战营

在字节奋战8年,今天回头一看只剩下这份1857页的算法笔记了

编程susu

Java 编程 程序员 计算机 技术宅

instanceof运算符的实质:Java继承链与JavaScript原型链

zhoulujun

JavaScript 原型链 instanceof constructor prototype

面试经历整理|持续四个月面试19家公司,收获8家offer,面试总结

编程susu

Java 编程 程序员 面试 计算机

架构实战营模块六作业-电商微服务架构

王晓宇

架构实战营

消息队列Kafka:源码解读(一)-异步任务管理

正向成长

kafka源码 时钟轮 TimingWheel

深入了解RocketMQ之NameServer

邱学喆

KVConfigManager RouteInfoManager

微信朋友圈高性能复杂度分析模拟

穿裤子的云

架构实战营

05. AI就是会学习的计算机程序:从机器学习角度看AI

Databri_AI

人工智能

架构实战营作业 M06

Shawn Liu

「架构实战营」

泪目!跳槽太不容易,蚂蚁金服三轮面试,四个小时灵魂拷问

Java~~~

Java spring 架构 面试 微服务

架构实战营 - 模块 6 - 电商系统的微服务拆分方案

雪中亮

架构实战营 #架构实战营

膜拜!首次公布Java10W字面经,Github访问量破百万

今晚早点睡

Java 程序员 计算机

大数据0815作业

朱磊

政府与市场应该如何互动

石云升

8月日更 财经思维

字节跳动三面拿offer:网络+IO+redis+JVM+GC+红黑树+数据结构

编程susu

Java 编程 程序员 计算机 技术宅

模块一作业

南山先生

#架构实战营

架构1期模块六作业

五只羊

架构实战营

架构训练营模块六作业

老实人Honey

架构训练营

模块二作业

Geek_fc100d

架构实战营

软件测试功能/数据库/linux/接口/自动化/测试开发面试真题解析

程序员阿沐

程序员 面试 软件测试 经验分享 测试工程师

模块6作业

SAKIN

极客时间---架构实战营2期---模块一作业

Dylan TANG

极客时间 架构实战营 作业一

阿里内部疯传的(Java知识面试指南项目),成功面试9家大厂Offer

Java~~~

Java spring 架构 面试 微服务

Go进阶指南,手摸手带你深入了解 range 实现原理

微客鸟窝

Go 语言 8月日更

【架构设计模块六】:拆分电商系统为微服务

Ryoma

架构实战营模块6课后作业

hello

架构训练营

电商系统拆分微服务

gawaine

架构师训练

Python代码阅读(第21篇):将变量名称转换为蛇式命名风格

Felix

Python 编程 Code Programing 阅读代码

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