
实践
传统地,对Java服务构建镜像时,我们借助Spotify的dockerfile-maven-plugin插件。先将服务打为Jar包,同时编写相应的Dockerfile文件。最后利用该插件通过本地的Docker环境进行镜像构建。从上其实不难看出,对于Java开发者而言上述构建流程非常繁琐,而现在Jib改变了这一现状。其使得开发者无需编写Dockerfile即可快速构建服务镜像并推送至指定仓库。下面即是对一个普通的SpringBoot通过Jib进行镜像构建的例子。其POM配置如下所示。这里补充下我们Java服务的运行端口为8069,故我们同样在POM文件暴露该端口
<?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">
...
<groupId>com.aaron</groupId>
<artifactId>springboot-demo</artifactId>
<version>5.3.0</version>
<packaging>jar</packaging>
...
<build>
<plugins>
<plugin>
<!--Jib插件-->
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>3.0.0</version>
<!-- 配置Maven执行任务 -->
<executions>
<execution>
<!-- 将插件的dockerBuild目标与Maven的package阶段进行绑定 -->
<goals>
<goal>dockerBuild</goal>
</goals>
<phase>package</phase>
</execution>
</executions>
<configuration>
<!--设置基础镜像, 作用类似于Dockerfile的FROM指令-->
<from>
<image>openjdk:8-jre-alpine</image>
</from>
<!--设置目标镜像信息-->
<to>
<!--配置仓库名、镜像名-->
<image>docker.io/aaron1995/${project.artifactId}</image>
<!--配置Tag信息-->
<tags>
<tag>${project.version}</tag>
</tags>
<!--配置仓库的账户、密码-->
<auth>
<username>aaron1995</username>
<password>foo123456</password>
</auth>
</to>
<!--设置容器信息-->
<container>
<!--暴露容器端口-->
<ports>
<port>8069</port>
</ports>
</container>
</configuration>
</plugin>
</plugins>
</build>
</project>
Jib支持以下功能,具体地
-
dockerBuild:构建镜像 -
build:构建镜像并推送到远程仓库
现在我们使用Jib插件的build目标来构建镜像并推送到远程仓库


现在我们利用该镜像创建容器,验证下。通过访问服务接口,证明服务运行正常

原文始发于微信公众号(青灯抽丝):基于Jib的Java镜像构建实践
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/156385.html