maven-docker-plugin: 如何获取容器 ip 地址
maven-docker-plugin: how to get container ip address
我是 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
命令,该命令能够使用 maven-docker-plugin
接受两个参数 -Ddbhost=${dbhost} -Ddbport=${dbport}
,其中 ${dbhost}
和 [=19] =] 应该是两个具有数据库容器 ip 地址和公开端口的 Maven 属性。
我如何像在手动示例中那样表达 运行 命令,并使用 fabric8 maven-docker-plugin
让我的 webapp 知道数据库 ip 地址?
更新:
我清理了我在 pom.xml 和 dockerfile 中所做的一些混乱。现在我可以使用环境变量传递参数。
剩下的唯一问题是我无法获取数据库容器的 IP 地址,即使它已链接到 webapp 容器的 <run>...</run>
配置中。
这是我的项目pom。
我正在使用 maven 3.3.9
、docker 1.12.5
和 fabric8 的 maven-docker-plugin 0.19.0
。
好的,我知道了。当您 link 容器 A
到容器 B
时,Docker 添加 A
作为主机名到 B
的 etc/hosts
文件。所以你不必弄清楚容器的 IP 地址,你可以只使用它的名字。同样的事情发生在 fabric8 maven-docker-plugin
上,这是一个很棒的插件。您使用
<links>
<link>A</link>
</links>
到link A
到B
和B
可以使用A:27017
到达A
的暴露端口上的服务,所以在我的 pom
中,我通过环境变量而不是容器 A
的 IP 地址传递字符串 A
。我将解决方案推送到我的 github 存储库。
我是 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
命令,该命令能够使用 maven-docker-plugin
接受两个参数 -Ddbhost=${dbhost} -Ddbport=${dbport}
,其中 ${dbhost}
和 [=19] =] 应该是两个具有数据库容器 ip 地址和公开端口的 Maven 属性。
我如何像在手动示例中那样表达 运行 命令,并使用 fabric8 maven-docker-plugin
让我的 webapp 知道数据库 ip 地址?
更新:
我清理了我在 pom.xml 和 dockerfile 中所做的一些混乱。现在我可以使用环境变量传递参数。
剩下的唯一问题是我无法获取数据库容器的 IP 地址,即使它已链接到 webapp 容器的 <run>...</run>
配置中。
这是我的项目pom。
我正在使用 maven 3.3.9
、docker 1.12.5
和 fabric8 的 maven-docker-plugin 0.19.0
。
好的,我知道了。当您 link 容器 A
到容器 B
时,Docker 添加 A
作为主机名到 B
的 etc/hosts
文件。所以你不必弄清楚容器的 IP 地址,你可以只使用它的名字。同样的事情发生在 fabric8 maven-docker-plugin
上,这是一个很棒的插件。您使用
<links>
<link>A</link>
</links>
到link A
到B
和B
可以使用A:27017
到达A
的暴露端口上的服务,所以在我的 pom
中,我通过环境变量而不是容器 A
的 IP 地址传递字符串 A
。我将解决方案推送到我的 github 存储库。