Spring-cloud brixton,eureka和docker with ephemeral ports

时间:2016-07-27 17:12:28

标签: spring spring-cloud spring-cloud-netflix

我正在使用spring cloud eureka在aws上的dockerised环境中进行微服务注册。

由于我正在使用docker临时端口映射,因此容器主机上公开的端口未知。为了克服这一点,我有一个自定义EurekaInstanceConfigBean,它要求主机上的docker守护进程为指定的端口,以便我可以使用它来注册eureka。

在注册开始之前一切正常。 EurekaDiscoveryClientConfiguration包含@EventListener(EmbeddedServletContainerInitializedEvent.class),它覆盖我在自定义EurekaInstanceConfigBean中分配的外部端口,并将其设置回容器内的本地端口。

我认为听众的目的是在server.port=0的情况下支持自动端口分配,但在我的设置中它正在破坏。

问题是:我可以以某种方式阻止EurekaDiscoveryClientConfiguration覆盖我手动设置的端口吗?我可以以某种方式使用我自己的EurekaDiscoveryClientConfiguration吗?

1 个答案:

答案 0 :(得分:0)

您可以使用主机网络,因此docker容器使用主机的网络堆栈,该服务器可以在其IP地址上访问该服务。

我通过使用docker-compose来使用它。尽管有作为反向代理的边缘服务(在我的情况下是基于zuul的),所有服务都具有随机端口。这些边缘服务具有稳定的端口。