对中国开发者最具吸引力的科技企业有哪些?快来为你 pick 的企业投票! 了解详情
写点什么

用 Jib 容器化 Java 应用程序

2020 年 9 月 02 日

用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 年 9 月 02 日 14:391260

评论

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

第十一周 学习总结

简简单单

浅述 | 数据可视化在电力行业的应用前景

一只数据鲸鱼

物联网 数据可视化 能源管理 智慧电力 电力可视化

数字化人才有哪些特性?

boshi

数字化转型 七日更

我用 Python 分析了一波热卖年货,原来大家都在买这些东西?

JackTian

Python 数据分析 数据可视化 2月春节不断更 年货

第6周作业

MR.X

同时拿到BATJMD的Offer是怎样的一种体验?

冰河

面试 面经 offer 一起进大厂 BATJMD

3. 无转折不编程,滚雪球学 Python

梦想橡皮擦

Python python从入门到精通 2月春节不断更 python入门

Linux下inotify + rsync实现文件实时同步

李先生

Linux 同步 rsync inotify

京东App Swift 混编及组件化落地

京东科技开发者

swift 开发者

一看就懂的var、let、const三者区别

蛙人

JavaScript

Python进阶丨如何创建你的第一个Python元类?

华为云开发者社区

Python 编程 python元类 对象 装饰器

从架构设计理念到集群部署,全面认识KubeEdge

华为云开发者社区

架构 容器 云原生 集群 kubeedge

图文详解:如何给女朋友解释什么是微服务?

浅羽的IT小屋

Java zookeeper 分布式 微服务 框架

使用Travis CI为工程搭建一个持续集成服务。

梁龙先森

持续集成 前端工程化 2月春节不断更

金牛来到,福气来到——TcaplusDB新年放送

TcaplusDB

数据库 nosql 互联网 数据安全 TcaplusDB

华云大咖说 | 大型分布式监控系统建设经验

华云数据

对接量化钱包区块链开发

v16629866266

如何极速极速搭建个人博客?Copy攻城狮用的这一招很优秀!

华为云开发者社区

JavaScript typescript GitHub React #Serverless

程序员防猝死指南

9號

golang 程序员 职业 内存 打工人

ARTS打卡 第30周

引花眠

微服务 ARTS 打卡计划

第4周左右

林亚超

即拼商城模式开发

luluhulian

编程范式( Programming paradigm )简介

引花眠

编程范式

ZEGO即构自建MSDN有序网络,为实时音视频传输极致顺畅!

ZEGO即构

嘿,同学,你要的Java内存模型(JMM)来了

Simon郎

大数据 JVM Java 8

笔记本电脑电池显示4%可用(已接通电源),经过清灰又莫名奇妙的可以续航啦,很奇怪!

孙叫兽

电脑故障 电池

记录一次BAT一线互联网公司前端JavaScript面试

魔王哪吒

JavaScript 学习 面试 前端 2月春节不断更

第十一周 安全稳定知识课后作业

简简单单

《零基础看得懂的Python入门教程 》——(三)打个招呼吧

1_bit

Python

MyChat,一个私有的“微信“

星尘的一个朋友

Java 微信 Netty IM JavaFx

Redis Sentinel 源码:Redis的高可用模型分析

华为云开发者社区

数据库 redis 高可用 框架 redis sentinel

滴滴 Logi 日志管理与分析平台

滴滴 Logi 日志管理与分析平台

用Jib容器化Java应用程序-InfoQ