【问题标题】:Docker - maven connect to specific repository in runtimeDocker - Maven 在运行时连接到特定的存储库
【发布时间】:2015-03-20 15:21:20
【问题描述】:

我有一个图像需要在运行时连接到存储库,但它表明 Docker 容器无法读取位于主机中的 ~/.m2/settings.xml 文件。

有什么办法可以让docker现在maven配置文件所在的位置?还是真的将maven配置文件导入到容器中?

【问题讨论】:

    标签: java xml maven docker


    【解决方案1】:

    您可以通过创建卷映射来做到这一点

    docker run ... -v /path/on/host/settings.xml:/home/me/.m2/settings.xml ....
    

    另请参阅以下示例,其中存储库在容器中运行并通过链接访问:

    【讨论】:

    • 我不确定我是否解释得很好。当我说主机时,我指的是 docker 所在的机器。所以,我尝试了-v /home/user/.m2/settings.xml,但我得到了相同的响应(没有在 repo 中找到 jar)。你还有其他线索吗?我需要在容器中安装 maven 吗?
    • @RodreNathan 现在我很困惑...如果您尝试运行 Maven,那么是的,它必须安装在容器中。
    • 是的,我已经安装了它并进行了一些配置,我会发布记录并帮助有同样问题的人。
    【解决方案2】:

    确保不要在 /home/me 的子目录中启动 docker。 或者,当您在 /home/me/myproject 中启动 docker 时, 创建一个目录 /home/me/myproject/shareddir 并将 settings.xml 复制到该目录。

    【讨论】:

      【解决方案3】:

      关于反馈,我们提出了以下解决方案。

      settings.xml 被添加到项目构建文件夹中,DockerFile 如下所示:

      ...
      RUN apt-get update
      RUN apt-get install -y maven 
      ADD /path/to/settings.xml /root/.m2/settings.xml
      ...
      

      在运行脚本文件中我们添加了存储库(这将写入 /etc/hosts):

      ...
      docker run --add-host=myrepo.mycompany.com:<ip> ...
      ...
      

      现在应用程序可以解决运行时依赖关系了!

      【讨论】:

      • 查看类似的答案。使用官方 Maven 镜像(无需构建)。此外,使用在链接容器中运行的 Nexus 映像而不是添加主机。见:stackoverflow.com/questions/27767264/…
      • 您还可以声明一个 VOLUME 以便能够在“docker run”时设置或更改设置文件。
      猜你喜欢
      • 2017-06-04
      • 2022-10-13
      • 1970-01-01
      • 1970-01-01
      • 2010-11-19
      • 1970-01-01
      • 1970-01-01
      • 2018-01-21
      • 1970-01-01
      相关资源
      最近更新 更多