首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用maven jib插件创建多层映像

如何使用maven jib插件创建多层映像
EN

Stack Overflow用户
提问于 2020-10-09 04:55:53
回答 1查看 1.5K关注 0票数 1

我想用maven jib插件构建我的一个微服务的映像,并且我知道,docker映像可以在多层体系结构中创建。我是在Dockerfile中手动做的。但不确定如何用maven jib插件实现这一点,下面是我用来构建映像的配置插件。

请引导我创建多层图像。

代码语言:javascript
复制
<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>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-09 20:08:11

(首先,Jib 1.0.0是超级老的。到目前为止,最新的版本是2.6.0。)

吉布为你做分层,创造一个优化的形象。这是使用Jib的要点之一:不考虑Docker,而只关注编写Java代码。Jib的使命是让任何一个对Docker知之甚少的Java开发人员能够以一种优化的方式轻松地封装他们的Java应用程序。

FYI,多层并不是Jib唯一的优点,还有许多其他的优点,其中之一就是很强的重复性。例如,在编写Dockerfile时,层的顺序很重要,因为您将使所有缓存的“上层”层失效,如果“较低”层发生更改,则必须重新构建这些层。此外,使用Docker进行重建通常会创建新的层(因此产生新的映像),即使您的项目没有真正改变,也会导致构建时间的增加,浪费存储空间和网络带宽。

如果您仍感兴趣,并进一步了解这些信息,以下是一些参考资料:

为了完成答案,Jib有一个延伸机构,您可以使用repo中的第一方层过滤器扩展来进一步定制层。但是,对于大多数人来说,很少需要过滤扩展。

最后,不需要在下面添加<tag>latest</tag><tags>代表附加标签:latest隐含在aa/${project.artifactId}中,就像docker push aa/foo暗示的aa/foo:latest一样。

代码语言:javascript
复制
 <image>aa/${project.artifactId}</image>
 <tags>
     <tag>latest</tag> <!-- This is unnecessary! -->
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64274138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档