Docker - Maven 在运行时连接到特定的存储库

Docker - maven connect to specific repository in runtime

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

有没有办法让docker现在maven配置文件所在的位置?或者实际将maven配置文件导入到容器中?

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

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

另请参阅以下示例,其中存储库位于 运行 容器内并通过 link 访问:

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

针对反馈,我们提出了以下解决方案。

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> ...
...

现在应用程序可以解决运行时间依赖性!