我正在使用通过scope = system添加的外部jar,并将${basedir}/src/main/java/...添加为pom.xml中依赖项子组下的系统路径。 每当我从 IntelliJ 本地使用该项目时,都不会出现警告或错误。但是,当我尝试从 docker 容器启动 .jar 文件时,我得到了有关依赖项的异常。
我尝试通过 IntelliJ 中项目结构下的库添加 jar,并将 jar 添加到根目录下的 libs 文件夹中。 首先,我提供了绝对路径,但后来我将其更改为 ${basedir},因为绝对路径没有映射为 docker 容器上的卷。 有什么方法可以将外部 jar 与项目 jar 一起打包,以便我可以在 docker 容器中使用它?
IIUC 你至少有两个选择:
假设 JAR 位于主机上的
${PWD}/jars
中,并且您希望它们位于容器中的 ${WORKDIR}/jars
中:
FROM [[original-image]]
WORKDIR ...
COPY ./jars ./jars
然后,确保您的代码通过
[[WORKDIR]]/jars/[[some-jar]]
引用 JAR
NB
[[WORKDIR]]
是您设置为容器工作目录的目录。
docker run ... --volume=${PWD}/jars:[[WORKDIR]]/jars ...
NB
[[WORKDIR]]
是您将用作容器工作目录的目录。这是 JAR 将安装在容器中的位置。