带有临时端口的 Spring-cloud brixton、eureka 和 docker
Posted
技术标签:
【中文标题】带有临时端口的 Spring-cloud brixton、eureka 和 docker【英文标题】:Spring-cloud brixton, eureka and docker with ephemeral ports 【发布时间】:2016-12-01 20:09:15 【问题描述】:我正在使用 spring cloud eureka 在 aws 上的 dockerised 环境中进行微服务注册。
当我使用 dockers 临时端口映射时,容器主机上暴露的端口是未知的。为了克服这个问题,我有一个自定义的EurekaInstanceConfigBean
,它会向主机上的 docker 守护进程询问分配的端口,以便我可以使用它向 eureka 注册。
在注册开始之前一切正常。 EurekaDiscoveryClientConfiguration
包含一个 @EventListener(EmbeddedServletContainerInitializedEvent.class)
覆盖我在自定义 EurekaInstanceConfigBean
中分配的外部端口,并将其设置回容器内的本地端口。
我认为侦听器的目的是在 server.port=0
的情况下支持自动端口分配,但在我的设置中它破坏了一些东西。
问题是:我能以某种方式停止EurekaDiscoveryClientConfiguration
以覆盖我手动设置的端口吗?我可以用我自己的EurekaDiscoveryClientConfiguration
吗?
【问题讨论】:
【参考方案1】:您可以使用主机网络,因此 docker 容器使用主机的网络堆栈,这使得服务可以通过其 IP 地址访问。
我通过使用 docker-compose 来使用它。尽管边缘服务用作反向代理(在我的情况下基于 zuul),但这些服务都有随机端口。这些边缘服务有稳定的端口。
【讨论】:
嗨帕特里克,我的问题是在配置 bean 中设置端口,以便我可以在尤里卡注册。无论哪种方式,我现在都用忽略setNonSecurePort
的版本覆盖了 EurekaInstanceConfigBean
并公开了一个替代设置器 - 有效但感觉有点骇人听闻......以上是关于带有临时端口的 Spring-cloud brixton、eureka 和 docker的主要内容,如果未能解决你的问题,请参考以下文章
spring-cloud: eureka之:ribbon负载均衡配置
Spring-Cloud、Hystrix 和 JPA - LazyInitializationException