我们正在创建使用自定义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
答案 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