maven-docker-plugin:如何获取容器ip地址

时间:2017-02-25 23:28:51

标签: maven docker fabric8 maven-docker-plugin

我是Docker和fabric8&{39}的新手。我想使用两个容器进行一些集成测试,一个部署了我的webapp,另一个使用了数据库。

更新 我可以使用以下命令运行两个容器:

maven-docker-plugin

这是我使用的dockerfile:

docker run --name db -p 27017:27017 mongo
docker run --name as -p 8080:8080 --link db mycustom/wildfly /opt/jboss/wildfly/standalone/bin/standalone.sh -b 0.0.0.0 -Ddbhost=172.17.0.2 -Ddbport=27017

现在我想使用fabric8 FROM fpezzati/wildflyogm ARG webapp COPY $webapp /opt/jboss/wildfly/standalone/deployments/ EXPOSE 8080 CMD ["/opt/jboss/wildfly/bin/standalone.sh", "-b", "0.0.0.0"] 运行两个容器。此时,我必须弄清楚如何表达maven-docker-plugin命令,该命令能够使用run -Ddbhost=${dbhost} -Ddbport=${dbport}获取两个参数maven-docker-plugin,其中${dbhost}和{{1应该是两个具有数据库容器IP地址和公开端口的maven属性。 如何在副手示例中表达run命令,并使用fabric8 ${dbport}让我的webapp了解数据库ip地址?

更新 我清理了我在pom.xml和dockerfile中所做的一些混乱。现在我可以使用环境变量传递参数。 剩下的唯一问题是我无法获取数据库容器的IP地址,即使它已链接到webapp容器的maven-docker-plugin配置中。

这是我的项目pom。 我使用<run>...</run>maven 3.3.9和fabric8&#39; docker 1.12.5

1 个答案:

答案 0 :(得分:0)

好的我明白了。当您将容器A链接到容器B时,Docker会将A作为主机名添加到B的{​​{1}}文件中。因此,您不必弄清楚容器的IP地址,您只需使用其名称即可。在fabric8 etc/hosts上也是如此,这是一个很棒的插件。你用

maven-docker-plugin

<links> <link>A</link> </links> 关联到AB可以使用B来覆盖A:27017的公开端口上的服务,因此在A中我通过enviroment变量而不是容器pom的ip地址传递字符串A。我将解决方案推送到我的github仓库。