首页 > 解决方案 > 用于具有自定义 Jar 的 Maven 构建的 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

标签: mavendockerdockerfile

解决方案


根据您的评论,错误

/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

推荐阅读