我是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
。
答案 0 :(得分:0)
好的我明白了。当您将容器A
链接到容器B
时,Docker会将A
作为主机名添加到B
的{{1}}文件中。因此,您不必弄清楚容器的IP地址,您只需使用其名称即可。在fabric8 etc/hosts
上也是如此,这是一个很棒的插件。你用
maven-docker-plugin
将<links>
<link>A</link>
</links>
关联到A
和B
可以使用B
来覆盖A:27017
的公开端口上的服务,因此在A
中我通过enviroment变量而不是容器pom
的ip地址传递字符串A
。我将解决方案推送到我的github仓库。