TypechoJoeTheme

香草物语

统计
登录
用户名
密码
/
注册
用户名
邮箱
输入密码
确认密码

利用jib-maven-plugin一键部署docker镜像

Laughing博主
2020-09-28
/
0 评论
/
1,910 阅读
/
1044 个字
/
百度已收录
09/28
本文最后更新于2024年03月18日,已超过185天没有更新。如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!

前言

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

申请Docker容器

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

maven中使用

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

<plugin>
                <groupId>com.google.cloud.tools</groupId>
                <artifactId>jib-maven-plugin</artifactId>
                <version>1.7.0</version>
                <configuration>
                    <!--from节点用来设置镜像的基础镜像,相当于Docerkfile中的FROM关键字-->
                    <from>
                        <!--从openjdk:alpine的基础上建造-->
                        <image>openjdk:alpine</image>
                    </from>
                    <to>
                        <!--镜像名称和tag-->
                        <image>docker.io/iamlisen/dockerjib</image>
                        <tags>
                            <tag>v1</tag>
                        </tags>
                        <auth>
                            <username>用户名</username>
                            <password>密码</password>
                        </auth>
                    </to>
                    <!--容器相关的属性-->
                    <container>
                        <!--jvm内存参数-->
                        <jvmFlags>
                            <jvmFlag>-Xms4g</jvmFlag>
                            <jvmFlag>-Xmx4g</jvmFlag>
                        </jvmFlags>
                        <!--要暴露的端口-->
                        <ports>
                            <port>8080</port>
                        </ports>
                    </container>
                </configuration>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>build</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

参数解释

  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

    配置

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

使用谷歌容器

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

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

<configuration>
  <to>
    <image>gcr.io/my-gcp-project/my-app</image>
  </to>
</configuration>

使用亚马逊容器

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

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

<configuration>
  <to>
    <image>aws_account_id.dkr.ecr.region.amazonaws.com/my-app</image>
  </to>
</configuration>

使用Docker容器

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

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

<configuration>
  <to>
    <image>registry.hub.docker.com/my-docker-id/my-app</image>
  </to>
</configuration>

扩展

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

属性类型默认值描述
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的入口点指令)。如果设置,则忽略jvmFlagsmainClass
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
docker
朗读
赞(2)
赞赏
感谢您的支持,我会继续努力哒!
版权属于:

香草物语

本文链接:

https://www.xiangcaowuyu.net/java/one-click-deployment-of-docker-image-with-jib-maven-plugin.html(转载时请注明本文出处及文章链接)

评论 (0)
  1. 康乐民博客 闲逛
    Windows 7 · QQ Browser

    多谢博主,解决问题!我的问题已经解决了,但是CDN镜像CSS文件的时候会出现权限报错,这个该怎么解决呢?

    2017-07-09 回复
  2. 小猫 闲逛
    Windows 10 · Google Chrome

    {!{data:image/webp;base64,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}!}

    2021-04-24 回复