Jib是Google开发的对Java应用快速构建镜像的工具。具体地,其支持Maven、Gradle插件等形式
实践
传统地,对Java服务构建镜像时,我们借助Spotify的dockerfile-maven-plugin插件。先将服务打为Jar包,同时编写相应的Dockerfile文件。最后利用该插件通过本地的Docker环境进行镜像构建。从上其实不难看出,对于Java开发者而言上述构建流程非常繁琐,而现在Jib改变了这一现状。其使得开发者无需编写Dockerfile即可快速构建服务镜像并推送至指定仓库。下面即是对一个普通的SpringBoot通过Jib进行镜像构建的例子。其POM配置如下所示。这里补充下我们Java服务的运行端口为8069,故我们同样在POM文件暴露该端口
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
| <?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> <groupId>com.google.cloud.tools</groupId> <artifactId>jib-maven-plugin</artifactId> <version>3.0.0</version>
<executions> <execution> <goals> <goal>dockerBuild</goal> </goals> <phase>package</phase> </execution> </executions>
<configuration> <from> <image>openjdk:8-jre-alpine</image> </from>
<to> <image>docker.io/aaron1995/${project.artifactId}</image> <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目标来构建镜像并推送到远程仓库
现在我们利用该镜像创建容器,验证下。通过访问服务接口,证明服务运行正常