谷歌助力,快速实现 Java 应用容器化
原文地址:梁桂钊的博客
一、什么是 Jib
二、实战出真知
1. 构建一个简单的 Java 工程
public class HelloWorld {public static void main(String[] args) {System.out.println("Hello World!");System.out.println("http://blog.720ui.com");}
}
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.lianggzone.sample.lib</groupId><artifactId>helloworld-samples</artifactId><version>0.1</version><packaging>jar</packaging><name>helloworld-samples</name><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><jib-maven-plugin.version>1.0.2</jib-maven-plugin.version><maven-compiler-plugin.version>3.8.0</maven-compiler-plugin.version></properties><dependencies></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>${maven-compiler-plugin.version}</version><configuration><source>1.8</source><target>1.8</target></configuration></plugin><!-- Jib --><plugin><groupId>com.google.cloud.tools</groupId><artifactId>jib-maven-plugin</artifactId><version>${jib-maven-plugin.version}</version><configuration><from><image>registry.cn-hangzhou.aliyuncs.com/lianggzone/oracle_java8</image></from><to><image>registry.cn-hangzhou.aliyuncs.com/lianggzone/jib-helloworld:v1</image></to><container><jvmFlags><jvmFlag>-Xms512m</jvmFlag><jvmFlag>-Xdebug</jvmFlag></jvmFlags><mainClass>com.lianggzone.HelloWorld</mainClass></container></configuration><executions><execution><phase>package</phase><goals><goal>build</goal></goals></execution></executions></plugin></plugins></build>
</project>
mvn compile jib:build
此外,如果"登录失败,未授权",需要通过 docker login
登录鉴权一下。此外,更好的做法是,你可以考虑在Maven 中放置凭据。
<settings>...<servers>...<server><id>registry.cn-hangzhou.aliyuncs.com</id><username>你的阿里云账号</username><password>你的阿里云密码</password></server></servers>
</settings>
大功告成,现在,我们来验证一把。我们通过 docker pull
拉取镜像,并运行。
docker pull registry.cn-hangzhou.aliyuncs.com/lianggzone/jib-helloworld:v1
docker run --name jib-helloworld -it registry.cn-hangzhou.aliyuncs.com/lianggzone/jib-helloworld:v1 /bin/bash
2. 构建一个 SpringBoot 的可运行 Jar
我们来一个复杂一些的项目,构建一个 SpringBoot 的项目。关于 SpringBoot 的使用,可以阅读笔者之前的文章:http://blog.720ui.com/columns/springboot_all/。现在,我们首先需要搭建一个工程,并创建一个启动类。
@SpringBootApplication
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}
@RestController
public class WebController {@RequestMapping("/blog")public String index() {return "http://blog.720ui.com";}
}
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.2.RELEASE</version></parent><groupId>com.lianggzone.sample.lib</groupId><artifactId>springboot-samples</artifactId><version>0.1</version><packaging>jar</packaging><name>springboot-samples</name><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><jib-maven-plugin.version>1.0.2</jib-maven-plugin.version><maven-compiler-plugin.version>3.8.0</maven-compiler-plugin.version></properties><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>${maven-compiler-plugin.version}</version><configuration><source>1.8</source><target>1.8</target></configuration></plugin><!-- Jib --><plugin><groupId>com.google.cloud.tools</groupId><artifactId>jib-maven-plugin</artifactId><version>${jib-maven-plugin.version}</version><configuration><from><image>registry.cn-hangzhou.aliyuncs.com/lianggzone/oracle_java8</image></from><to><image>registry.cn-hangzhou.aliyuncs.com/lianggzone/jib-springboot:v1</image></to><container><jvmFlags><jvmFlag>-Xms512m</jvmFlag><jvmFlag>-Xdebug</jvmFlag></jvmFlags></container></configuration><executions><execution><phase>package</phase><goals><goal>build</goal></goals></execution></executions></plugin></plugins></build>
</project>
现在,我们执行 mvn compile jib:build
命令进行自动化构建。执行完成后,我们可以在阿里云镜像仓库获取镜像。
现在,我们再来验证一把。我们通过 docker pull
拉取镜像,并运行。
docker pull registry.cn-hangzhou.aliyuncs.com/lianggzone/jib-springboot:v1
docker run -p 8080:8080 --name jib-springboot -it registry.cn-hangzhou.aliyuncs.com/lianggzone/jib-springboot:v1 /bin/bash
现在,我们访问 http://localhost:8080/blog ,我们可以正常调用 API 接口了。
3. 构建一个 WAR 工程
<configuration><from><image>tomcat:8.5-jre8-alpine</image></from><container><appRoot>/usr/local/tomcat/webapps/ROOT</appRoot></container>
</configuration>
三、源码地址
源码地址:https://github.com/lianggzone/jib-samples
附:参考资料
- https://github.com/GoogleContainerTools/jib
- https://github.com/GoogleContainerTools/jib/tree/master/jib-maven-plugin
写在末尾
【服务端思维】:我们一起聊聊服务端核心技术,探讨一线互联网的项目架构与实战经验。同时,拥有众多技术大牛的「后端圈」大家庭,期待你的加入,一群同频者,一起成长,一起精进,打破认知的局限性。
转载于:https://blog.51cto.com/10637625/2379227
谷歌助力,快速实现 Java 应用容器化相关推荐
- Java 应用容器化最佳实践
公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! 系统选择 关于最基础的底层镜像, 通常大多数我们只有三种选择: Alpine.Debian.CentOS; 这三者 ...
- Google 正式开源 Jib ,帮助 Java 应用快速容器化
Google 本周宣布开源一款新的 Java 工具 Jib ,旨在让开发者使用他们熟悉的工具更轻松地将 Java 应用程序容器化. 在7月9日发布的博客文章中,Google 软件工程师 Appu Go ...
- 容器云原生DevOps学习笔记——第二期:如何快速高质量的应用容器化迁移
暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...
- 挖财的 Kubernetes 容器化之路
挖财内部对容器化项目的代号为 K2 (乔戈里峰),乔戈里峰是世界第二高峰,但攀登极富挑战,寓意就是面对挑战,勇攀高峰:).项目从 2016 年 11 月到现在已经有三年的时间了,如今挖财内部测试环境早 ...
- 五分钟带你玩转Zabbix6.0容器化HA集群
图片 蔡斯 | Zabbix开源社区签约专家 Zabbix资深玩家,SRE高级运维,架构师.精通服务组件监控.模板制作及告警治理. 擅长领域:Zabbix API定制化开发,对接企业蓝鲸,JMS保垒机 ...
- 谷歌大神为你解释Kubernetes, 微服务和容器化
来自谷歌云平台(Google Cloud Platform)的开发者布道师 Ray Tsang 和 Bret McGowen 在 SpringOne2GX 大会上分享了谷歌的 Kubernetes 的 ...
- EDAS 4.0 助力企业一站式实现微服务架构转型与 K8s 容器化升级
作者:安绍飞 审核&校对:营火 编辑&排版:雯燕 前言 近年来,企业的数字化随着互联网的普及发展越来越快,技术架构也是几经更迭,尤其是在线业务部分.最开始企业的需求就是将业务尽可能在线 ...
- Docker学习总结(36)——利用Google开源Java容器化工具Jib构建镜像
一.前言 容器的出现让Java开发人员比以往任何时候都更接近"编写一次,到处运行"的工作流程,但要对Java应用程序进行容器化并非易事:你必须编写Dockerfile,以root身 ...
- 深入理解容器技术——聊聊服务容器化三大助力
服务容器化三大助力 我们都知道,微服务的落地有众多需求,容器化技术是它的不二之选,容器化通过三大助力来实现了微服务落地的众多需求: 码头林立--各种软硬件平台层出不穷 容器化解决方案具有一个普适性,它 ...
最新文章
- (001) RN开发之Mac搭建开发环境
- jvm七:数组创建本质
- 【LeetCode从零单排】No.9 Palindrome Number
- 论面向组合子程序设计方法 之 重构2
- 4 交换机-fanout(订阅发布模式)
- java.io.IOException: Broken pipe 的异常处理
- qmediaplayer获取流类型_Java 流API
- mitmproxy https抓包的原理是什么?
- (第八章)左右外连接
- 如何强制子div为父div的高度的100%而不指定父级的高度?
- 微软 SQL Server 2016 SP1 开发者版入驻 Windows 容器
- 波司登杯2013微软office应用创意大赛烟台大学校园赛参赛历程
- 【javascript】字符串逆序输出
- win7查找计算机图片,win7电脑图片查看器丢失了的修复教程
- linux安装键盘鼠标失灵,在archlinux安装界面这卡住了,鼠标键盘失灵
- RocketMq_02_消息队列及角色
- Newcoder Wannafly13 B Jxy军训(费马小定理、分数在模意义下的值)
- python 黑魔法_Python “黑魔法” 之 Meta Classes
- c11计算机考试,2015年计算机二级考试C++备考练习试题及答案(6)
- CSP 202109-2 非零段划分