gpt4 book ai didi

maven - 不要在 Docker 构建中下载所有 Maven 依赖项

转载 作者:行者123 更新时间:2023-12-02 17:53:46 25 4
gpt4 key购买 nike

我正在尝试创建一个 Dockerfile 来构建一个 Maven 项目。

我想知道如何修复 Dockerfile 以及然后执行什么命令。

我想知道如何运行构建,以便它不会在每次构建时下载所有 Maven 依赖项,而位于 src/目录中的源代码没有更改。

这是我的 Dockerfile 文件:

FROM maven:3.3.9-jdk-8

RUN mkdir -p /usr/src/app

WORKDIR /usr/src/app

RUN cd /usr/src/app

ADD pom.xml /usr/src/app

RUN mvn dependency:resolve

ADD src /usr/src/app

RUN mvn package

ENTRYPOINT ["mvn"]
CMD ["package"]

我应该运行 docker run --rm -it toolbox命令或 docker build -t toolbox .命令 ?

上面这两个命令都运行良好,除了它们都下载了所有 Maven 依赖项,即使源代码没有被触及。

最佳答案

这就是 Docker 的工作方式。每次做docker run ,它会创建一个新容器,该容器无法访问旧容器中的文件。因此,它会下载所需的所有依赖项。您可以通过声明外部卷来规避此问题。看着Dockerfile Maven,它声明了一个卷 /root/.m2 .因此,您可以使用主机中的目录并通过 -v 将其附加到此卷。选项。你的 Docker 命令是,

`docker run -v <directory-in-your-host>:/root/.m2 <other-options-and-commands>

每次运行新的 docker run ,Maven 将在下载依赖项之前查看您的本地目录。

但是,我的问题是,除非您有任何特定原因,否则为什么不先构建应用程序并使用生成的 jar 来创建 docker 镜像。您可以使用 java 基础镜像创建自己的 Dockerfile 或仅使用 docker-maven-plugin 之一。喜欢 spotify那里可用。这会让你的生活轻松很多。

关于maven - 不要在 Docker 构建中下载所有 Maven 依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38293073/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com