微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用Maven三角帆插件创建Muttilayer图像

如何解决如何使用Maven三角帆插件创建Muttilayer图像

我想使用maven三角帆插件构建我的一个微服务的映像,并且我知道可以在多层体系结构中创建docker映像。我在Dockerfile中手动执行此操作。 但不确定如何使用Maven三角臂插件实现 以下是具有用于构建映像的配置的插件

请指导我创建多层图像。

<profile>
            <id>jib</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>com.google.cloud.tools</groupId>
                        <artifactId>jib-maven-plugin</artifactId>
                        <version>1.0.0</version>
                        <configuration>
                            <from>
                                <image>gcr.io/test/java:11</image>
                            </from>
                            <to>
                                <image>aa/${project.artifactId}</image>
                                <tags>
                                    <tag>latest</tag>
                                    <!--suppress MavenModelinspection -->
                                    <tag>Test</tag>
                                </tags>
                            </to>
                            <container>
                                <ports>
                                    <port>7575</port>
                                    <port>9000</port>
                                    <port>9001</port>
                                    <port>9002</port>
                                </ports>
                                <jvmFlags>
                                    <jvmFlag>-Duser.timezone=GMT</jvmFlag>
                                    <jvmFlag>-Dfile.encoding=utf-8</jvmFlag>
                                    <jvmFlag>-XX:MaxRAMFraction=2</jvmFlag>
                                    <jvmFlag>-XX:+UseG1GC</jvmFlag>
                                    <jvmFlag>-XX:+UseStringDeduplication</jvmFlag>
                                </jvmFlags>
                                <volumes>
                                    <volume>/tmp</volume>
                                </volumes>
                            </container>
                        </configuration>
                        <executions>
                            <execution>
                                <phase>package</phase>
                                <goals>
                                    <goal>dockerBuild</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

解决方法

(首先,Jib 1.0.0太旧了。到目前为止,最新版本是2.6.0。)

三角臂为您分层,创建优化的图像。那是使用Jib的主要要点之一:不是考虑Docker,而是专注于编写Java代码。 Jib的使命是使几乎不具备Docker知识的任何Java开发人员都能以优化的方式轻松地将其Java应用容器化。

仅供参考,多层不是Jib的唯一好处;还有许多其他优点,其中之一就是重现性强。例如,在编写Dockerfile时,层的顺序很重要,因为您将使所有缓存的“上”层无效,并且如果“下”层发生更改,则必须重新构建它们。此外,使用Docker进行重建通常会导致创建新层(因此没有新映像),即使您的项目并没有真正改变,这也会导致构建时间增加,并浪费整个地方的存储和网络带宽。

如果您仍然好奇并了解更多有关这些的信息,请参考以下内容:

为完成答案,Jib有一个extension mechanism,您可以使用回购中找到的第一方Layer-Filter扩展名进一步自定义图层。但是对于大多数人来说,很少需要过滤扩展了。


最后,无需添加<tag>latest</tag><tags>用于additional tags:latest隐含在aa/${project.artifactId}中,就像docker push aa/foo隐含aa/foo:latest一样。

 <image>aa/${project.artifactId}</image>
 <tags>
     <tag>latest</tag>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。