1

很明显,通常对于我们的项目,当我们运行 mvn 测试时,首先它会下载依赖项并将其存储到我们的本地 /home/username/.m2 ,然后它将在我们下次运行时使用mvn 测试。但是我们在 Dockerfile 中使用 mvn 镜像,有没有办法做同样的事情(除了使用卷或挂载概念)???...

4

2 回答 2

1

您可以创建一个中间容器,构建在您已经使用的 Maven 容器之上。

  • mvn dependency:go-offline作为中间容器的最后构建步骤执行;
  • 在 Docker 中标记中间容器;
  • 使用标记的中间容器作为构建的基础容器。

Maven 将下载新的/缺失的依赖项,但中间容器将存储所需本地存储库的主要部分。

在对项目中的依赖项进行重大更改后,您需要重新创建中间容器(并对其进行标记)。

于 2021-03-10T22:28:16.537 回答
1

看看开发者指南:https ://github.com/intuit/karate/wiki/Developer-Guide#docker

请注意 -v "$HOME/.m2":/root/.m2 重新使用本地 Maven JAR 下载“缓存”(这样可以节省时间)

另请注意,您可以基于 Maven docker 镜像构建自己的镜像,请参阅文档并查找以下部分Packaging a local repository with the imagehttps ://hub.docker.com/_/maven

于 2021-03-10T18:03:27.337 回答