一般常用 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 中有以下几种常用打包镜像方式。
-
执行 lifecycle - package 即可完成打包和构建、推送镜像。
-
执行 lifecycle - plugins - jib - jib:build 可直接构建镜像并推送到远程仓库。
-
执行 lifecycle - plugins - jib - jib:dockerBuild 可直接构建镜像到本地 docker 环境中。