Ich benutze Federwolke Eureka für Microservice-Registrierung in einer dockerisierten Umgebung auf aws.Spring-Cloud Brixton, Eureka und Docker mit ephemeren Ports
Da ich Dockers Ephemeral-Port-Mapping verwenden, ist der auf dem Container-Host exponierte Port unbekannt. Um das zu überwinden, habe ich eine benutzerdefinierte EurekaInstanceConfigBean
, die den Docker-Daemon auf dem Host nach dem zugewiesenen Port fragt, damit ich das verwenden kann, um sich bei eureka zu registrieren.
Das alles funktioniert gut, bis die Registrierung beginnt. Die EurekaDiscoveryClientConfiguration
enthält eine @EventListener(EmbeddedServletContainerInitializedEvent.class)
, die den externen Port überschreibt, den ich in meinem benutzerdefinierten EurekaInstanceConfigBean
zugewiesen habe, und setzt es zurück auf den lokalen Port innerhalb des Containers.
Ich denke, der Zuhörer Zweck ist die automatische Port-Zuweisung im Falle von server.port=0
zu unterstützen, aber in meinem Setup ist es Dinge zu brechen.
Die Frage ist: Kann ich irgendwie die EurekaDiscoveryClientConfiguration
stoppen, um meinen manuell eingestellten Port zu überschreiben? Kann ich irgendwie meine eigene EurekaDiscoveryClientConfiguration
verwenden?
Hallo Patrick, mein Problem ist das Setzen des Ports in der Config Bean, so dass ich mit Eureka registrieren kann. Wie auch immer, ich habe jetzt die 'EurekaInstanceConfigBean' mit einer Version überschrieben, die' setNonSecurePort' ignoriert und einen alternativen Setter enthüllt - das funktioniert, fühlt sich aber hackig an ... –