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

标签 maven docker pom.xml

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

我用作基本镜像的docker镜像是来自carlossg的官方Docker-Maven镜像。

指令说明:
可以将$MAVEN_CONFIG dir(默认为/root/.m2)配置为卷,以便在构建时将所有复制到Dockerfile中的内容丢失。
为此,将创建dir /usr/share/maven/ref/目录,并且在容器启动时将其中的任何内容复制到$MAVEN_CONFIG。因此,dir /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中缺少什么吗?我还需要做些什么来防止镜像再次下载所有依赖项?

最佳答案

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

关于maven - 如何使用Docker-Maven镜像作为基础将pom.xml依赖项打包到Docker镜像中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55395902/

相关文章:

java - 使用 Jaeger 进行跟踪不适用于 docker-compose

maven - 如何在 Maven 依赖项中使用 JUnit 5.2 BOM?

java - 使用 maven,如何将 war 配置到 ear 文件中

java - 强制 Maven 命令行参数

java.lang.ClassNotFoundException : org. jsoup.nodes.Document 使用 Maven

docker - ENV、RUN 生成层、图像或容器? (理解文档问题)

linux - Crontab 无法正常工作

java - 尝试在maven的pom.xml中添加插件

java - 我的 Java AWS Lambda 函数的 mvn 包在编译期间无法解析 Lambdalogger 类

java - 为什么 Maven 不下载 jar 文件但可以下载插件?