Docker-通过conesul和port beetwen服务的动态添加组成

时间:2019-07-17 18:37:16

标签: spring-boot docker consul

我想知道是否可以制作docker-compose文件 指定领事端口:8500:8500,然后我们得到服务A,服务B,它们是动态添加的来自Consul的内部端口,而外部端口应该是静态端口?

例如Consul在端口8500上启动,然后一些Java Spring-boot应用程序从consul在动态端口上启动-假设:12345,并且它像在docker-compose port中一样注册为内部和外部端口,应用程序B在动态端口12346上启动,它知道它可以通过端口12345与应用程序A通信。有可能吗?

1 个答案:

答案 0 :(得分:0)

容器暴露的端口需要端口映射。容器正在侦听的端口可以映射到任何主机帖子。

领事正在侦听8500端口,并且还映射到主机上的同一端口。这就是您的撰写文件将包含在领事服务中。

spring boot应用程序是consul的客户端,客户端端口不是侦听端口,并且不公开。 Spring Boot应用程序不需要端口映射。

我环顾四周,发现一个带有自动发现弹簧靴here

的示例实现。

docker-compose看起来像这样

zipkin:
  image: openzipkin/zipkin
  ports:
    - "9411:9411"

consul:
  image: consul
  ports:
    - "8400:8400"
    - "8500:8500"
    - "8600:8600"

service-b:
  image:  spring-cloud-consul-example/service-b
  links:
    - "consul"
    - "hystrix-dashboard"
    - "zipkin"

service-a:
  image:  spring-cloud-consul-example/service-a
  links:
    - "consul"
    - "service-b"
    - "hystrix-dashboard"
    - "zipkin"

admin-dashboard:
  image:  spring-cloud-consul-example/admin-dashboard
  ports:
    - "8040:8040"
  links:
    - "service-a"
    - "service-b"
    - "zuul"
    - "hystrix-dashboard"
    - "consul"

zuul:
  image:  spring-cloud-consul-example/zuul
  ports:
    - "8060:8060"
  links:
    - "consul"
    - "service-a"
    - "zipkin"

hystrix-dashboard:
  image:  spring-cloud-consul-example/hystrix-dashboard
  ports:
    - "8050:8050"
  links:
    - "consul"