QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

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

评论

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

分布式系统当中的CAP理论

五分钟学大数据

分布式 CAP理论 4月日更

跨省通办,海淀在全国率先推出“区块链+”服务新模式

CECBC

让孩子爱上阅读(一)

箭上有毒

读书笔记 4月日更

微服务中台技术解析之sso登录实践

小江

Java 后端 架构设计 SSO

浪潮云说丨打造网络安全“铜墙铁壁”

云计算

架构实战业命题二学习总结

Vic

架构实战营

第二课作业

杰语

爬虫实例:爬取中国大学排名Top20

Bob

Python python 爬虫 4月日更

计算机原理学习笔记 Day7

穿过生命散发芬芳

计算机原理 4月日更

streamlit:算法工程师快速编写demo的利器

行者AI

算法

Service Mesh 从“趋势”走向“无聊”

阿里巴巴云原生

Java 运维 云原生 dubbo 中间件

推荐!看完全面掌握,最详细的 Docker 学习笔记总结(2021最新版)

民工哥

Docker 程序员 容器 DevOps 运维

架构实战营模块二总结

竹林七贤

「前端初学者、硬件爱好者、编程自学者」微信小程序开发很简单!

智能物联实验室

大前端 硬件设计 硬件研发

如何避免团队里出现搭便车现象

石云升

团队建设 28天写作 职场经验 管理经验 4月日更

面向对象编程九诫

风翱

面向对象编程 4月日更

重读《重构2》- 封装变量

顿晓

重构 4月日更

跨链技术如何破解区块链的可扩展性难题?

CECBC

区块链

架构实战营模块二命题作业

Vic

架构实战营

Flutter 学习笔记(一) Text 组件

U2647

flutter 4月日更

混沌工程缓存实战系列一Redis

心远

缓存 混沌工程

我把这个软件,推荐给了总监

yes

【架构实战营】第二模块总结

烟雨濛濛

架构实战营

【得物技术】得物前端性能监控实践

得物技术

大前端 体验 监控 用户体验 实践

四种软件架构概述

xcbeyond

Serverless 微服务 分布式架构 单体架构 4月日更

【架构实战营】第二模块作业

烟雨濛濛

架构实战营

自学软件测试怎么学?(送思维导图+学习资源)

程序员阿沐

学习 软件测试 性能测试 自动化测试 测试开发

华仔训练营第二次作业

方堃

腾讯司晓:区块链如何在数字世界中重塑所有权?

CECBC

2021最新发布:Java面试突击大全 带你摸熟20+互联网公司面试考点

比伯

Java 编程 架构 程序人生 计算机

8421的数学含义

山@支

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