2017-08-17 1 views
0

Ich folgte dieser Dokumentation registrierenWie Sie sich richtig Frühling Boot-App (eingesetzt Cloud Foundry) in Consul

spring: 
    cloud: 
    consul: 
     enabled: true 
     host: consul.domain.tld 
     port: 443 
     discovery: 
     instanceId: ${spring.application.name}:${spring.application.instance_id:${random.value}} 
     fail-fast: false 

Wenn eingesetzt, um Cloud Foundry, kann die App verbinden zu Konsul und versucht sich zu registrieren, aber Konsuls "Service-Check" schlägt sofort fehl.

Lesen, was konfiguriert ist, erhalte ich die folgenden Instanzen im Frühjahr Boot-App:

list = discoveryClient.getInstances("myApp"); 
list.get(0) => "http://05c81764-18a4-4905-41a8-b5b8:8080" 

Ich sehe, dass die UUID höchstwahrscheinlich die instanceId von Cloud Foundry erzeugt wird. Natürlich funktioniert diese URL weder in Cloud Foundry noch auf einem externen Consul-Server, der versucht, den Zustand des Dienstes regelmäßig zu überprüfen.

Wie muss ich meine Spring Boot-App richtig konfigurieren, damit die Service-Registrierung bei Consul in Cloud Foundry funktioniert?

Antwort

1

Sie müssten spring.cloud.consul.discovery.hostname auf einen Wert setzen, der von der vcap-Umgebungsvariablen zurückgegeben wird.

Etwas wie:

spring.cloud.consul.discovery.hostname=${vcap.application.uris[0]:localhost} 
spring.cloud.consul.discovery.port=80 
+0

Sie Spencer danken, 'hostname' und' port' hat den Trick. – user3105453