前言

jib-maven-plugin是谷歌出品的为您的Java应用程序构建Docker和OCI镜像的Maven插件。

申请Docker容器

这里已部署到Docker为例介绍,关于Docker容器的申请,可以 点击

maven中使用

通过在pom.xml文件加入插件引入spring boot工程

com.google.cloud.tools                jib-maven-plugin                1.7.0openjdk:alpinedocker.io/iamlisen/dockerjibv1用户名密码-Xms4g-Xmx4g8080packagebuild

参数解释

  1. 从docker-hub拉取openjdk:alpine镜像作为基础镜像
  2. 构建标识为your_image的镜像,tag列表为v1
  3. 容器启动时将通过java -Xms4g -Xmx4g
  4. 并且暴露出端口8080
  5. docker构建绑定到package生命周期

构建docker镜像

通过以下命令构建docker镜像

mvn compile jib:build




maven进行docker打包 maven打包docker镜像_docker php 一键部署


配置

通过将镜像设置为“推送”来配置插件:

使用谷歌容器

确保你有docker-credential-gcr命令行工具。Jib自动使用docker-credential-gcr来获取凭证。参阅其他认证的验证方法。

例如,为了构建镜像gcr.io/my-gcp-project/my-app,配置将是:

gcr.io/my-gcp-project/my-app

使用亚马逊容器

确保你有docker-credential-ecr-login命令行工具。Jib自动使用docker-credential-ecr-login来获取凭证。参阅其他认证的验证方法。

例如,为了构建镜像aws_account_id.dkr.ecr.region.amazonaws.com/my-app,配置将是:

aws_account_id.dkr.ecr.region.amazonaws.com/my-app

使用Docker容器

确保你有一个 docker-credential-helper设置。例如,在macOS,凭证助手将是docker-credential-osxkeychain。参阅其他认证的验证方法。

例如,为了构建镜像my-docker-id/my-app,配置将是:

registry.hub.docker.com/my-docker-id/my-app

扩展

扩展选项提供额外的配置选项为定制镜像生成。

属性类型默认值描述totoRequired配置目标镜像以构建应用程序。fromfrom查看from配置基础镜像以构建应用程序的顶部。containercontainer查看container配置从镜像中运行的容器。allowInsecureRegistriesbooleanfalse如果设置为true,Jib忽略HTTPS证书错误,并可能退回HTTP作为最后的手段。强烈建议将这个参数设置为false,因为HTTP通信是未加密的,并且对于网络上的其他人来说是可见的,并且不安全的HTTPS并不比普通的HTTP好。如果使用自签名证书访问注册表,则将证书添加到Java运行时的可信密钥可能是启用此选项的另一种选择。skipbooleanfalse如果设置为true,则跳过Jib执行(对于多模块项目是有用的)。这也可以通过-Djib.skip跳过命令行选项来指定。useOnlyProjectCachebooleanfalse如果设置为true,Jib不会在不同的Maven项目之间共享缓存。

from是具有以下属性的对象:

属性类型默认值描述imagestringgcr.io/distroless/java基础的镜像参考。authauthNone直接指定凭证。credHelperstringNone证书助手的后缀,它可以对基础镜像进行身份验证(遵循docker-credential-)。

to是具有以下属性的对象:

属性类型默认值描述imagestringRequired目标镜像的参考。这也可以通过-Dimage命令行选项来指定。authauthNone直接指定凭证。credHelperstringNone证书助手的后缀,它可以对基础镜像进行身份验证(遵循docker-credential-)。tagslistNone额外的标签推向

auth是一个具有以下属性的对象(请参阅使用特定凭据):

属性类型描述usernamestring用户名passwordstring密码

container是具有以下属性的对象:

属性类型默认值描述appRootstring/app容器上放置应用程序内容的根目录。argslistNone默认的主方法参数来运行应用程序。entrypointlistNone启动容器的命令(类似于Docker的入口点指令)。如果设置,则忽略jvmFlags和mainClass。environmentmapNone键值对,用于设置容器上的环境变量(类似于Docker的Env指令)。formatstringDocker使用OCI构建OCI容器映像jvmFlagslistNone运行应用程序时要传递给JVM的附加标志。labelsmapNone用于应用镜像元数据的键值对(类似于Docker的标签指令)。mainClassstringInferred*主要类从应用程序启动。portslistNone容器在运行时暴露的端口(类似于Docker的公开指令)。useCurrentTimestampbooleanfalse默认情况下,Jib擦除所有时间戳以保证再现性。如果这个参数设置为true,Jib将把镜像的创建时间戳设置为构建时间,这将牺牲可再现性,以便能够容易地判断镜像何时创建。

您还可以使用connection/read系统属性为注册表交互配置HTTP连接/读取超时,该属性通过命令行以毫秒为单位配置(缺省值是20000;您还可以将其设置为0用于无限超时):

mvn compile jib:build -Djib.httpTimeout=3000

代码已上传到码云

下载代码

git clone https://gitee.com/lisen0629/lisen_org.git

使用

进入克隆的位置,执行命令进入对应工程
cd dockerjib