【问题标题】:Consul share network from docker来自 docker 的 Consul 共享网络
【发布时间】:2020-07-17 06:33:17
【问题描述】:

docker中有consul服务器。

  vote-consul-server:
    image: consul:1.7.2
    environment:
      CONSUL_BIND_INTERFACE: eth0
    ports:
      - "${CONSUL_PORT}:8500"

它为已注册的应用程序生成主机。 主要问题是其他应用程序如果不在 docker 中就无法相互通信。

例如:我有配置服务(docker with consul),用户服务(IDE)。 当用户服务启动时,它会向 config-server 请求配置,但 consul 给出的链接不正确(仅在 docker 网络中可用)。

c.c.c.ConfigServicePropertySourceLocator : Fetching config from server at : http://83a6c7ab12d0:8888/

如何从 consul(docker) 发布所有链接?

【问题讨论】:

    标签: spring-boot docker consul spring-cloud-config spring-cloud-consul


    【解决方案1】:

    由于每个容器都有自己的IP,并且可能有自己的网络,你可以尝试使用host网络:

    docker run --rm -d --network host --name vote-consul-server
    

    更多详情请见host networking tutorial

    另外,你可以了解networking from the container’s point of view

    【讨论】:

      【解决方案2】:

      首先——需要在bootstrap.yaml中定义IP地址配置

      spring:
        ...
        cloud:
          consul:
            host: ${CONSUL_HOST}
            port: ${CONSUL_PORT}
            discovery:
              ip-address: ${CONSUL_HOST}
              prefer-ip-address: true
      

      主要属性有:ip-address和prefer-ip-address。

      如果所有应用程序都在一个网络中工作 - 不存在问题。 例如:所有服务都在 docker 中工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-08-09
        • 2020-11-11
        • 1970-01-01
        • 2020-12-06
        • 2018-02-21
        • 2014-06-15
        • 2013-11-25
        相关资源
        最近更新 更多