【发布时间】:2018-02-25 08:15:17
【问题描述】:
我有一个我正在尝试转换的 java/hibernate/jpa/maven 项目,以便它(从项目创建的 .jar 文件)是 Docker 映像的一部分。我也在使用 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 包装是“jar”或者你没有给出包标签?
-
我只合并了 pom.xml 文件的一部分(为了保持简短)。是的,正在创建一个用于 Docker 映像的 .jar 文件。
-
我能想到的最简单的事情是:
<build><finalName>WhatEver.jar</finalName>...并改成ADD target/WhatEver.jar app.jar? -
顺便说一句:您在 pom 文件中为 maven-jar-plugin 定义的配置不存在...您也不需要执行任何操作。只给出 mainClass 的配置部分...插件配置中没有 finalName 等。
标签: java maven dockerfile spotify