如何使用Docker-Maven映像作为基础将pom.xml依赖项打包到Docker映像中?

时间:2019-03-28 10:59:27

标签: maven docker pom.xml

我正在尝试在映像构建阶段将POM.xml文件中的依赖项打包到docker映像中,但是当我运行程序时,它仍会下载maven依赖项。

我用作基础映像的Docker映像是来自carlossg的官方Docker-Maven映像。

指令说明: $MAVEN_CONFIG目录(默认为/root/.m2)可以配置为卷,因此在构建时复制到Dockerfile中的所有内容都会丢失。 为此,创建了目录/usr/share/maven/ref/,并且在容器启动时目录中的所有内容都将复制到$MAVEN_CONFIG。因此,目录/usr/share/maven/ref/存在,并且该目录中的所有内容都将在容器启动时复制到$MAVEN_CONFIG

并在Dockerfile中添加以下内容:

COPY pom.xml /tmp/pom.xml
RUN mvn -B -f /tmp/pom.xml -s /usr/share/maven/ref/settings-docker.xml 
dependency:resolve

所以我的Dockerfile看起来像这样:

FROM maven:3.6.0-jdk-8
WORKDIR /usr/src/app
COPY pom.xml /tmp/pom.xml
RUN mvn -f /tmp/pom.xml -s /usr/share/maven/ref/settings-docker.xml 
dependency:resolve

然后我使用以下命令构建docker映像:

docker build -t [image_name] .

然后我将docker映像上传到docker存储库,并在gitlab-ci.yml文件中引用它以运行测试。测试可以正常运行,但是所有依赖项都需要重新下载,这可能需要一些时间。

我在官方页面上关注自述文件:

https://github.com/carlossg/docker-maven

我的Dockerfile是否缺少某些内容?我还需要做些什么来防止映像再次下载所有依赖项?

1 个答案:

答案 0 :(得分:0)

如果要避免Maven与存储库联系,请使用-o标志运行它。