maven - 用于具有自定义 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
解决方案
根据您的评论,错误
/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
推荐阅读
- mysql - 使用 SQL 获取表中最早和最新插入的行
- custom-action - 在标准 Windows 安装程序对话框中设置 RadioButton
- angular - Ionic 4 组件的“属性”与“属性”有什么区别?
- google-cloud-firestore - Firestore 规则:如果给定文档不存在但在获取中使用怎么办?
- multithreading - Spring data Couchbase 生成的查询方法不是线程安全的
- mrtk - Can I trigger the Hololens Calibration sequence from inside my application?
- sqlite - SQLite:PRIMARY KEY 默认为 ASC 吗?
- javascript - Webpack 4 - 无法使用 url-loader 在 src 中加载具有绝对路径的图像
- sql - 使用sql从数字中拆分小数位
- java - 在有限堆的列表中查找重复项