用于具有自定义Jar的Maven构建的DockerFile

时间:2019-08-28 12:44:02

标签: maven docker dockerfile

我们正在创建使用自定义jar的maven Java应用程序。如何在docker build上下文中在本地maven中安装自定义jar?

Docker文件如下:

FROM maven:3-jdk-8-alpine AS build  
COPY Fix43_INTL.jar /app/src
RUN mvn install:install-file -Dfile=/app/src/Fix43_INTL.jar -DgroupId=com.neo -DartifactId=fix43 -Dversion=1.0 -Dpackaging=jar -DgeneratePom=true
RUN mvn -f /app/pom.xml clean install
COPY ./web-integral-fix-initiator/src /app/src
COPY ./web-integral-fix-initiator/pom.xml /app
RUN mvn -f /app/pom.xml clean package

FROM openjdk:8  
COPY --from=build /app/target/web-integral-fix-initiator-0.0.1-SNAPSHOT.jar /app/web-integral-fix-initiator-0.0.1-SNAPSHOT.jar

1 个答案:

答案 0 :(得分:0)

根据您的评论,错误

  

/ app / src:“没有这样的文件或目录”

是直截了当的。您正在尝试将jar复制到容器中不存在的路径中。您应该首先创建目标目录(/app/src),然后将jar复制到其中。

我编辑了您的dockerfile并进行了一些优化(主要是在单层链接命令,删除了不必要的mvn clean install)。

FROM maven:3-jdk-8-alpine AS build
RUN mkdir -p /app/src  
COPY Fix43_INTL.jar /app/src
COPY ./web-integral-fix-initiator/src /app/src
COPY ./web-integral-fix-initiator/pom.xml /app
WORKDIR /app
RUN mvn install:install-file -Dfile=/app/src/Fix43_INTL.jar -DgroupId=com.neo -DartifactId=fix43 -Dversion=1.0 -Dpackaging=jar -DgeneratePom=true \
&& mvn clean package

FROM openjdk:8  
COPY --from=build /app/target/web-integral-fix-initiator-0.0.1-SNAPSHOT.jar /app/web-integral-fix-initiator-0.0.1-SNAPSHOT.jar