【发布时间】:2016-12-24 04:47:41
【问题描述】:
我在 docker 容器中打包了 6 个微服务。在每个 swarm 节点上,我都安装了 consul 代理,绑定到主机 ip,客户端处于 0.0.0.0 模式。 所有微服务都在我从 Swarm 管理器运行的 docker-compose 文件中。 微服务是用 Java 编写的,我必须在 bootstrap.yml 中指定 consul 代理端点。可能的选择是:
- 本地主机
- ${HOSTIP} 环境变量
问题: - localhost 不是主机的 localhost,而是容器 localhost,并且我在容器 localhost 但主机上没有领事代理。 - 撰写文件中的 ${HOSTIP} 我必须提供此环境变量。但是,我不知道 Swarm MANager 将在哪里安排微服务启动,所以我不知道将使用哪个 IP 地址。
我尝试在每个节点上公开主机 IP 地址,但由于我从管理器运行 compose,它不会读取此变量。
您有任何解决此问题的建议吗?我有领事集群、3 个管理器和 3 个节点。在每个管理器和节点上,我都启动了领事代理(作为 docker 容器)。无论我使用什么类型的网络,我都无法启动微服务。我以 --net=host 和 --net=bridge 的身份启动了 consul,但这不起作用。
有人有想法吗? 先谢谢了。
【问题讨论】:
-
This reading 可以帮助你。 This one too.
-
查看 v1.12 中新的 Docker Engine swarm 功能。现在内置了服务发现,这意味着您可能不再需要使用 consul 来跟踪容器实例。 docs.docker.com/engine/swarm。我还可以推荐以下内容,详细说明如何将负载均衡器与新的 swarm 模式集成:technologyconversations.com/2016/08/01/…
标签: docker docker-compose docker-swarm orchestration