java - 在docker中使用外部jar依赖

标签 java maven docker jar

我正在使用通过scope = system添加的外部jar,并将${basedir}/src/main/java/...添加为pom.xml中依赖项子组下的系统路径。 每当我从 IntelliJ 本地使用该项目时,都不会出现警告或错误。但是,当我尝试从 docker 容器启动 .jar 文件时,我得到了有关依赖项的异常。

我尝试通过 IntelliJ 中的项目结构下的库添加 jar,并将 jar 添加到根目录下的 libs 文件夹中。 首先,我提供了绝对路径,但后来我将其更改为 ${basedir},因为绝对路径没有映射为 docker 容器上的卷。 有什么方法可以将外部 jar 与项目 jar 一起打包,以便我可以在 docker 容器中使用它?

最佳答案

IIUC 你至少有两个选择:

1。将 JAR 添加到新镜像(根据上面的 @LexByte 建议)。

假设 JAR 位于主机上的 ${PWD}/jars 中,并且您希望它们位于容器中的 ${WORKDIR}/jars 中:

FROM [[original-image]]
WORKDIR ...
COPY ./jars ./jars

然后,确保您的代码通过 [[WORKDIR]]/jars/[[some-jar]] 引用 JAR

NB [[WORKDIR]] 是您设置为容器工作目录的任何目录。

2。使用现有镜像将 JAR 安装到容器中:

docker run ... --volume=${PWD}/jars:[[WORKDIR]]/jars ...

NB [[WORKDIR]] 是您将用作容器工作目录的目录。这是 JAR 将安装到容器中的位置。

关于java - 在docker中使用外部jar依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58138142/

相关文章:

java - 在 Mavenized GWT 项目中继承模块时出错

linux - 使用不带 sudo 的 docker-compose 不起作用

image - 如何将Docker镜像列表与API返回的标签列表相关联?

java - 发送和接收来自同一类(class)的邮件?

java - 使用Spring云值时EmbeddedWebApplicationContext的ClassNotFoundException

java - 在多模块 Maven 项目中,将跨不同模块使用的属性文件放在哪里?

sql-server - Docker-compose MS SQL attach_dbs

java - 带有字节数组参数而不是 ASCII 的 PBEKeySpec

java - 释放所有等待线程

maven - 在 Linux 上运行时,exec-maven-plugin 出现类未找到异常