我想知道是否可以制作docker-compose文件
指定领事端口:8500:8500
,然后我们得到服务A,服务B,它们是动态添加的来自Consul的内部端口,而外部端口应该是静态端口?
例如Consul在端口8500上启动,然后一些Java Spring-boot应用程序从consul在动态端口上启动-假设:12345
,并且它像在docker-compose port
中一样注册为内部和外部端口,应用程序B在动态端口12346
上启动,它知道它可以通过端口12345
与应用程序A通信。有可能吗?
答案 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"