0

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

当我使用 dockers 临时端口映射时,容器主机上暴露的端口是未知的。为了克服这个问题,我有一个习惯EurekaInstanceConfigBean,它会向主机上的 docker 守护进程询问分配的端口,这样我就可以使用它向 eureka 注册。

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

我认为侦听器的目的是支持自动端口分配,以防万一,server.port=0但在我的设置中它会破坏事情。

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

4

1 回答 1

0

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

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

于 2016-07-29T10:21:55.400 回答