2017-01-12 17 views
0

Я запускаю приложение Spring Boot как контейнер Docker. Пока это работает, но это приносит мне головные боли при попытке использовать Spring Cloud Consul. Он отлично читает конфигурацию у консула KVS, но проверки на работоспособность, похоже, действуют.Конфигурация работоспособности Spring Cloud Consul

Проверка работоспособности по умолчанию использует имя хоста контейнера докера, например http://users-microservice/health. Очевидно, что это не будет разрешено при доступе от консула.

Нет проблем, documentation упоминает, что вы можете использовать healthCheckPath в файле bootstrap.yml для его настройки. Это то, что я сейчас:

spring: 
    application: 
     name: users-microservice 
    cloud: 
     consul: 
     host: myserver.com 
     port: 8500 
     config: 
      prefix: API-CONFIG 
      profileSeparator: '__' 
     discovery: 
      tags: users-microservice 
      healthCheckPath: http://myserver.com:${server.port}/status 
      healthCheckInterval: 30s 

К сожалению, эта переменная, кажется, используется в совершенно иной манере от того, что я ожидал. Это то, что консул пытается достичь:

Get http://users:18090http//myserver.com:18090/status: dial tcp: unknown port tcp/18090http

Как я могу это исправить? Есть ли какой-то недокументированный параметр конфигурации, который я должен установить?

ответ

1

Использование spring.cloud.consul.discovery.healthCheckUrl=http://myserver.com:${server.port}/status

healthCheckPath только изменяет путь, не пройдет и порт.

Смежные вопросы