maven-docker-plugin:如何获取容器的IP地址
我是Docker和fabric8的maven-docker-plugin
docker maven-docker-plugin
新手。 我想用两个容器做一些集成testing,一个用我的webapp部署,另一个用数据库。
更新:我可以运行这两个容器使用这些命令:
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
这是我使用的dockerfile:
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"]
现在我想使用fabric8 maven-docker-plugin
docker maven-docker-plugin
运行这两个容器。 在这一点上,我必须弄清楚如何使用maven-docker-plugin
-Ddbhost=${dbhost} -Ddbport=${dbport}
maven-docker-plugin
来表示一个能够使用两个参数-Ddbhost=${dbhost} -Ddbport=${dbport}
的run
命令,其中${dbhost}
和${dbport}
应该是具有数据库容器IP地址和暴露端口的两个maven属性。 我怎么能像在手边的例子中那样expression一个运行命令,并使用fabric8 maven-docker-plugin
docker maven-docker-plugin
让我的webapp知道数据库的IP地址?
更新:我清理了我在我的pom.xml和dockerfile中做了一些混乱。 现在我可以通过使用环境variables传递参数。 剩下的唯一问题是即使链接到webapp容器的<run>...</run>
configuration中,我也无法获取数据库容器的IP地址。
这是我的项目的pom 。 我使用maven 3.3.9
,docker docker 1.12.5
和fabric8的maven-docker-plugin 0.19.0
。
好,我知道了。 在将容器A
链接到容器B
,Docker将A
作为主机名添加到B
的etc/hosts
文件中。 所以你不必弄清楚容器的IP地址就可以使用它的名字。 在fabric8 maven-docker-plugin
docker maven-docker-plugin
上也是如此,这是一个很棒的插件。 你用
<links> <link>A</link> </links>
将A
连接到B
和B
可以使用A:27017
在A
的暴露端口上访问服务,所以在我的pom
我通过环境variables而不是容器A
的IP地址传递stringA
我推动我的github回购解决scheme。