使用consul动态地将IP和端口导出到另一个Docker容器

时间:2015-12-18 02:49:15

标签: docker docker-compose service-discovery consul

目标:在没有硬编码的情况下,通过 phpapp 容器 提供的网页对http:// $ IP:$ PORT / api / container.json进行XHR调用微服务 api 容器的IP和端口 的环境变量。

http://CONSULHOST:8500/v1/catalog/service/api会公开我的 api 微服务的配置。

示例:

[{"Node":"node",
"Address":"123.1.2.3",
"ServiceID":"163b5be3-5450-4cac-8416-c1630723bc42-n1:microlith_micro-hipchat_1:443",
"ServiceName":"hipchat",
"ServiceTags":["primary"],
"ServiceAddress":"123.234.234.234",
"ServicePort":32772
}]

我希望通过在 phpapp ServiceAddress ServicePort 端口>动态Docker容器,无需对信息进行硬编码。然后,我可以在前端网络浏览器中将此信息用作对http://IP_OF_APP_CONTAINER:PUBLIC_PORT/api/container.json的Javascript调用

我在Consul安装了Registrator,两者都在Docker Swarm中工作。

  • 我不想为我的微服务硬编码配置。它必须使用Consul或环境动态创建。
  • 我不想对Consul IP进行编码。它可以以某种方式传递,但我必须能够通过bash构建脚本来完成。
  • phpapp 容器已链接到 api 容器,但此 似乎无法公开前端端口,只显示IP。< / LI>

我已经制作了一个用例图表:

docker-compose 
    -> swarm ->
phpapp container
api container
consul container
registrator container

docker swarm diagram

将进行XHR调用的javascript将是客户端,从我的php容器提供。 phpapp和api容器都显示在consul中,我在Consul API中看到它们,但是我想知道如何在phpapp容器上动态地将这些信息映射到配置中,以便我可以从中进行XHR调用phpapp容器的Web客户端。

0 个答案:

没有答案