gpt4 book ai didi

java - 将生成的 jar 文件的名称从 Maven pom.xml 传递到 Dockerfile

转载 作者:行者123 更新时间:2023-11-30 07:52:06 26 4
gpt4 key购买 nike

我有一个 java/hibernate/jpa/maven 项目,我正在尝试转换它(从该项目创建的 .jar 文件)是 Docker Image 的一部分。我也在使用 Spotify 插件。

下面,对于以下 Docker 命令

ADD <full_path_of_generated_file>.jar app.jar

full_path_of_generated_file 值是从 pom.xml 文件(在 Maven 端)生成的。 Docker 需要此信息才能正确生成图像。

如何将生成的文件的名称传递给 Dockerfile?

TIA

Maven pom.xml文件的插件区

<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>

<configuration>
<imageName>apx/${project.artifactId}</imageName>
<dockerDirectory>${project.basedir}/docker</dockerDirectory>
</configuration>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<!-- <version>2.6</version> -->
<executions>
<execution>
<id>analyze</id>
<phase>package</phase>
<configuration>
<failBuild>true</failBuild>
<ignoreDirect>false</ignoreDirect>
</configuration>
</execution>
</executions>
<configuration>

<finalName>${project.artifactId}</finalName>
<archive>
<manifest>
<mainClass>ccinfw.MainApplication</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>

[... snip ...]

<artifactId>ccinf</artifactId>

下面是正在使用的 Dockerfile 的副本

FROM java:8
VOLUME /tmp
ADD <full_path_of_generated_file>.jar app.jar
RUN bash -c 'touch /app.jar'
EXPOSE 8080
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

最佳答案

在 pom.xml 中

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>copy-resources</id>
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target/</outputDirectory>
<resources>
<resource>
<directory>src/main/docker</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>

确保将 Dockerfile 放在 pom 中提到的位置,以便它可以通过动态替换引用来构建和复制 Dockerfile。

enter image description here

内部 Dockerfile

ADD @project.artifactId@-@project.version@.jar app.jar

学分:https://github.com/vmudigal/microservices-sample

关于java - 将生成的 jar 文件的名称从 Maven pom.xml 传递到 Dockerfile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46251394/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com