我有一个多模块项目,我使用Jib构建spring引导应用程序。我知道,容器中的fat JAR阻止高效构建映像(看见),但是需要将一个特定模块打包到fat JAR文件中。由于我希望为整个多模块项目保留相同的构建工具,所以可以使用Jib?包装胖罐子吗?
我已经尝试过repackage的目标了
<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>,即打包应用程序,如
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
...发布于 2021-01-13 16:57:17
是的,可以使用Jib将一个胖罐子放到容器映像上。请使用Jib的"containerizingMode“配置选项:
<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。
发布于 2021-04-17 09:23:09
如果有人在这件事上犹豫不决:我有一个类似的用法,我想利用jib (Dockerfile-less +可以在没有docker守护进程的情况下使用),但由于其他原因,我目前无法避免使用胖罐。
基于Chanseok的评论(在这个问题下),我得出如下结论:
target/${build.finalName}.jar中)添加到自己的层中mvn package jib:dockerBuild显式调用它(或者... jib:build用于无后台进程的构建)
资料来源:https://gitter.im/google/jib?at=5fad68c5d37a1a13d6a12174 + https://github.com/GoogleContainerTools/jib/tree/master/jib-maven-plugin#extradirectories-object
该示例至少适用于spring 2.4.X
<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>https://stackoverflow.com/questions/64849472
复制相似问题