0

我是 Docker 和 fabric8 的新手maven-docker-plugin。我想使用两个容器进行一些集成测试,一个部署了我的 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。在这一点上,我必须弄清楚如何表达一个run能够-Ddbhost=${dbhost} -Ddbport=${dbport}使用两个参数的命令maven-docker-plugin,其中${dbhost}${dbport}应该是两个具有数据库容器 IP 地址和公开端口的 Maven 属性。如何像在手动示例中那样表达运行命令并让我的 webapp 了解使用 fabric8 的数据库 IP 地址maven-docker-plugin

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

这是我项目的pom。我正在使用maven 3.3.9,docker 1.12.5和 fabric8 的maven-docker-plugin 0.19.0.

4

1 回答 1

0

好,我知道了。当您将 container 链接A到 containerB时,Docker 将A作为主机名添加到Betc/hosts文件中。因此,您不必弄清楚容器的 IP 地址,只需使用其名称即可。Fabric8 也是如此maven-docker-plugin,这是一个很棒的插件。你用

<links>
  <link>A</link>
</links>

链接ABB可以用来访问暴露端口A:27017上的服务,所以在我的环境变量中,我通过字符串而不是容器的 IP 地址。我将解决方案推送到我的 github 存储库。ApomAA

于 2017-03-06T07:32:18.410 回答