【问题标题】:docker maven repository not copied to /root/.m2docker maven 存储库未复制到 /root/.m2
【发布时间】:2021-03-10 18:13:34
【问题描述】:

根据docker maven image documentation

$MAVEN_CONFIG 目录(默认为 /root/.m2)可以配置为 卷,因此在构建时复制到 Dockerfile 中的任何内容都会丢失。 出于这个原因,目录 /usr/share/maven/ref/ 存在,并且其中的任何内容 该目录将在容器启动时复制到 $MAVEN_CONFIG。

/usr/share/maven/ref/ 的内容应该在容器启动时复制到/root/.m2。我正在使用如下 Dockerfile

FROM maven:3.6.3-adoptopenjdk-8
COPY pom.xml /tmp/pom.xml
RUN mvn -B -f /tmp/pom.xml -s /usr/share/maven/ref/settings-docker.xml install
WORKDIR /app
COPY pom.xml /app/
COPY ./src /app/src
ENTRYPOINT ["mvn","test"]

上述 dockerfile 构建了一个镜像,其中依赖项存储在 /usr/share/maven/ref/repository 中。但是容器启动时,内容并没有复制到/root/.m2,依赖完全重新下载。

我在这里错过了什么吗?是否需要运行任何特殊步骤来复制存储库内容?

【问题讨论】:

    标签: java docker maven


    【解决方案1】:

    对于要复制的存储库,应调用父图像的入口点。

    Dockerfile 有以下内容:

    入口点[“/usr/local/bin/mvn-entrypoint.sh”]

    CMD ["mvn", "test"]

    ENTRYPOINTdocker maven image's 入口点相同。它具有将存储库复制到 $MAVEN_CONFIG 的逻辑(默认为 /root/.m2

    【讨论】: