【问题标题】:Include local Maven m2 repo in Dockerfile during mvn package stage?在 mvn 包阶段在 Dockerfile 中包含本地 Maven m2 存储库?
【发布时间】:2019-11-01 18:44:37
【问题描述】:

如何将本地机器~/.m2/repository 包含在docker buildmvn dependency:resolve 阶段? docker build 没有 -v 选项。这是否可能仅通过docker build 与我们现有的构建管道兼容(仅允许单独的 Dockerfile)?这个answer 没有帮助。

当前 Dockerfile:

FROM maven:3.6.2-jdk-11 AS maven

WORKDIR /tmp/

# Set the local repository to /tmp/.m2/repository
RUN echo \
    "<settings xmlns='http://maven.apache.org/SETTINGS/1.0.0\' \
    xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' \
    xsi:schemaLocation='http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd'> \
        <localRepository>/tmp/.m2/repository</localRepository> \
        <interactiveMode>true</interactiveMode> \
        <usePluginRegistry>false</usePluginRegistry> \
        <offline>false</offline> \
    </settings>" \
    > /usr/share/maven/conf/settings.xml;

# TODO: How to perform -v ~/.m2/:/tmp/.m2/ but only using `docker build`?

COPY pom.xml /tmp/
RUN mvn dependency:resolve
RUN mvn dependency:resolve-plugins

COPY src /tmp/src/
RUN mvn package

FROM openjdk:11-jre-slim
EXPOSE 8080

RUN apt update
RUN apt -y install curl

WORKDIR /usr/app

ENV TARGET="<target name>.jar"

COPY --from=maven "/tmp/target/$TARGET" .
CMD ["java", "-jar", "$TARGET"]

当然这是行不通的:

更新:我可以挂载一个指向本地 .m2 存储库的文件夹并将整个文件夹复制到 docker 映像中。但是,现在我无法让 mvn 使用该本地存储库。

然后

COPY pom.xml /tmp/
RUN mvn -o -s /usr/share/maven/conf/settings.xml dependency:resolve -X

导致错误:

Cannot access central (https://repo.maven.apache.org/maven2) in offline mode and the artifact com.myapp:somename:pom:1.0.4 has not been downloaded from it before.

【问题讨论】:

    标签: java maven docker


    【解决方案1】:

    一个想法,你可以做的是在 docker 中缓存 maven 依赖项。您可以使用 mvn dependency-offline (https://maven.apache.org/plugins/maven-dependency-plugin/),在 pom.xml 仍然是一样的

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-05
      • 2021-01-07
      • 2021-11-19
      • 2017-04-04
      • 1970-01-01
      • 1970-01-01
      • 2020-09-26
      • 2011-11-02
      相关资源
      最近更新 更多