Maven 构建镜像的新方法--Jib

default

一般常用 Maven Docker 插件(如 spotify/docker-maven-plugin、fabric8/docker-maven-plugin)存在依赖 Docker 环境、配置复杂和构建慢等问题。

针对简单的 Docker 镜像构建,建议使用 Jib,其主要区别在于简单、快速、分层构建、不需要 Docker 环境。

配置

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
<!-- 镜像上传插件 -->
<plugin>
    <groupId>com.google.cloud.tools</groupId>
    <artifactId>jib-maven-plugin</artifactId>
    <version>3.5.1</version>
    <configuration>
        <from>
            <image>registry.cn-hangzhou.aliyuncs.com/gear-base/eclipse-temurin:11-jdk</image>
            <!--                        <image>anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/openjdk:11-8.6</image>-->
        </from>
        <to>
            <image>registry.cn-hangzhou.aliyuncs.com/gear-repo/test-jib</image>
        </to>
        <allowInsecureRegistries>false</allowInsecureRegistries>
        <container>
            <jvmFlags>
                <jvmFlag>-Xms512m</jvmFlag>
                <jvmFlag>-Xmx1g</jvmFlag>
            </jvmFlags>
            <ports>
                <port>8080</port>
            </ports>
            <volumes>
                <!-- 声明挂载日志目录 -->
                <volume>/app/log</volume>
            </volumes>
            <environment>
                <TZ>Asia/Shanghai</TZ>
            </environment>
            <creationTime>USE_CURRENT_TIMESTAMP</creationTime>
        </container>
    </configuration>
    <executions>
        <execution>
            <!-- 执行 package 阶段执行 build 构建镜像 -->
            <phase>package</phase>
            <goals>
                <goal>build</goal>
            </goals>
        </execution>
    </executions>
</plugin>

注意:由于 IDEA 中拉取不到 Docker Hub 的镜像,所以需要将镜像上传到阿里云的镜像仓库中,然后配置 from 节点为阿里云的镜像仓库中的镜像。此处已提供一份镜像:registry.cn-hangzhou.aliyuncs.com/gear-base/eclipse-temurin:11-jdk

原 OpenJDK 镜像已停止更新,故使用 Eclipse Temurin 镜像。

构建

在 IDEA 中有以下几种常用打包镜像方式。

  1. 执行 lifecycle - package 即可完成打包和构建、推送镜像。

  2. 执行 lifecycle - plugins - jib - jib:build 可直接构建镜像并推送到远程仓库。

  3. 执行 lifecycle - plugins - jib - jib:dockerBuild 可直接构建镜像到本地 docker 环境中。

Gear(夕照)的博客。记录开发、生活,以及一些不足为道的思考……