首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用臂架制作弹簧启动脂罐

用臂架制作弹簧启动脂罐
EN

Stack Overflow用户
提问于 2020-11-15 20:32:42
回答 2查看 3.3K关注 0票数 1

我有一个多模块项目,我使用Jib构建spring引导应用程序。我知道,容器中的fat JAR阻止高效构建映像(看见),但是需要将一个特定模块打包到fat JAR文件中。由于我希望为整个多模块项目保留相同的构建工具,所以可以使用Jib?包装胖罐子吗?

我已经尝试过repackage的目标了

代码语言:javascript
复制
<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <version>2.3.5.RELEASE</version>
    <executions>
        <execution>
            <goals>
                <goal>repackage</goal>
            </goals>
        </execution>
    </executions>
</plugin>

,即打包应用程序,如

代码语言:javascript
复制
app
├── classpath
│   └── import-metadata-service-0.0.1-SNAPSHOT.original.jar
└── libs
    ├── HdrHistogram-2.1.12.jar
    ├── LatencyUtils-2.0.3.jar
    ├── apache-jena-libs-3.13.0.pom 
    ...
EN

回答 2

Stack Overflow用户

发布于 2021-01-13 16:57:17

是的,可以使用Jib将一个胖罐子放到容器映像上。请使用Jib的"containerizingMode“配置选项:

代码语言:javascript
复制
<plugin>
    <groupId>com.google.cloud.tools</groupId>
    <artifactId>jib-maven-plugin</artifactId>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>build</goal>
            </goals>
        </execution>
   </executions>
    <configuration>
        <containerizingMode>packaged<containerizingMode>                
    </configuration>
</plugin>

有关完整的Jib配置选项,请参考https://github.com/GoogleContainerTools/jib/tree/master/jib-maven-plugin#extended-usage

票数 2
EN

Stack Overflow用户

发布于 2021-04-17 09:23:09

如果有人在这件事上犹豫不决:我有一个类似的用法,我想利用jib (Dockerfile-less +可以在没有docker守护进程的情况下使用),但由于其他原因,我目前无法避免使用胖罐。

基于Chanseok的评论(在这个问题下),我得出如下结论:

  • 放下由jib添加的任何层。
  • 将fatjar (默认情况下在target/${build.finalName}.jar中)添加到自己的层中
  • 覆盖入口点以执行"java -jar .“而不是常规的入口点指向您的主
  • Jib被显式调用,而不绑定到生命周期(至少在我的示例中是这样),因此必须使用以下mvn package jib:dockerBuild显式调用它(或者... jib:build用于无后台进程的构建)
  • 使用潜水,您可以看到只添加了一个层,并且它相当大(==胖jar)

资料来源:https://gitter.im/google/jib?at=5fad68c5d37a1a13d6a12174 + https://github.com/GoogleContainerTools/jib/tree/master/jib-maven-plugin#extradirectories-object

该示例至少适用于spring 2.4.X

代码语言:javascript
复制
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <plugin>
            <groupId>com.google.cloud.tools</groupId>
            <artifactId>jib-maven-plugin</artifactId>
            <version>3.0.0</version>
            <dependencies>
                <dependency>
                    <groupId>com.google.cloud.tools</groupId>
                    <artifactId>jib-layer-filter-extension-maven</artifactId>
                    <version>0.2.0</version>
                </dependency>
            </dependencies>
            <configuration>
                <container>
                    <entrypoint>java,-jar,/app/${project.build.finalName}.jar</entrypoint>
                </container>
                <extraDirectories>
                    <paths>
                        <path>
                            <from>target/</from>
                            <includes>*.jar</includes>
                            <into>/app</into>
                        </path>
                    </paths>
                </extraDirectories>
                <pluginExtensions>
                    <pluginExtension>
                        <implementation>com.google.cloud.tools.jib.maven.extension.layerfilter.JibLayerFilterExtension</implementation>
                        <configuration implementation="com.google.cloud.tools.jib.maven.extension.layerfilter.Configuration">
                            <filters>
                                <filter>
                                    <!-- exclude all jib layers, which is basically anything in /app -->
                                    <glob>/app/**</glob>
                                </filter>
                                <filter>
                                    <!-- this is our fat jar, this should be kept by adding it into its own layer -->
                                    <glob>/app/${project.build.finalName}.jar</glob>
                                    <toLayer>jib-custom-fatJar</toLayer>
                                </filter>
                            </filters>
                        </configuration>
                    </pluginExtension>
                </pluginExtensions>
            </configuration>
        </plugin>
    </plugins>
</build>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64849472

复制
相关文章

相似问题

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