Tag: maven mirroring

如何可靠地使用docker-compose的本地Maven镜像代理?

我正在努力将我们的Maven构build过程迁移到我们现有的Java项目的Docker中。 我是一位使用Maven的经验丰富的Java开发人员,但仍在学习Docker。 我们的主要问题是,默认情况下,工件没有被caching,所以我们每五分钟下载一半的互联网,加上我们在当地老年人Nexus服务器上也有东西。 由于这是自动集成testing,我们不希望在Docker之外构build工件。 仔细考虑之后,我发现一个好的解决scheme可以是为每个开发人员运行一个Maven镜像代理,在这里可以保存本地configuration,然后Docker实例就可以引用这个代理。 手动运行Nexus3容器 docker run -p 8081:8081 –name nexus sonatype/nexus3 (加上一些手动configuration代理我们的内部存储库)到目前为止工作得很好,但不是由docker-compose控制的。 不幸的是,除了硬编码机器的外部IP号码之外,我不能看到客人访问主机(其中端口8081可用)的方式,并且我也看不到一种方式使docker组合负责确保联系人容器运行时,我的dockerbuild设需要它。 我目前使用这个作为Docker中的settings.xml文件: <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"> <mirrors> <mirror> <id>local-nexus</id> <name>Local Nexus</name> <!– Host external IP number –> <url>http://1.2.3.4:8081/repository/sbforge_central/</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors> <localRepository>/usr/share/maven/ref/repository</localRepository> </settings> 我应该如何处理这个? 我看到两种情况。 我怎样才能得到一个可靠的主机名称? Linux是必需的,其他平台将是不错的。 如何使docker-compose控制这个容器,以便在运行docker-compose build以便docker可以确保nexus容器的主机名parsing? 将成品包装起来时不需要。 还是有更聪明的方法?