我正在尝试使用docker来自动化Maven构建。我想要构建的项目花费了将近20分钟的时间来下载所有的依赖关系,因此我试图构建一个可以缓存这些依赖关系的Docker镜像,但似乎并没有挽救它。我的Dockerfile是Maven码头缓存依赖关系
FROM maven:alpine
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
ADD pom.xml /usr/src/app
RUN mvn dependency:go-offline
图像构建,它确实下载了所有内容。但是,生成的图像与基本图像maven:alpine
的大小相同,所以它似乎没有缓存图像中的依赖关系。当我尝试使用mvn compile
的图片时,它会在完成20分钟的所有重新下载之后进行。
是否可以构建缓存我的依赖关系的Maven图像,以便每次使用图像执行构建时都不必下载它们?
我运行下面的命令:
docker build -t my-maven .
docker run -it --rm --name my-maven-project -v "$PWD":/usr/src/mymaven -w /usr/src/mymaven my-maven mvn compile
我的理解是,无论RUN
在泊坞窗构建过程确实成为导致图像的一部分。
制作一个数据容器,其中包含下载的工件...您建立了多少个模块?你有多少次测试?导致20分钟听起来很长? – khmarbaise
你能解释一下数据容器的含义吗?我想我最终会得到一个拥有这些数据的maven图像。 “mvn dependency:go-offline”不会保存这些对本地文件系统的依赖关系吗? –
如果您对本地文件系统有任何更改,如果您重新启动容器,那么这些更改将被丢弃... – khmarbaise