我正在尝试在领事中为我的微服务应用程序配置运行状况检查,该应用程序将在docker容器中运行。
为了配置执行器运行状况检查以进行咨询,我尝试使用$ {server.address}作为主机地址,但这为我提供了Docker容器ID。
这是bootstrap.yml
spring:
cloud:
consul:
scheme: http
host: consul.service.consul
port: 8500
config:
format: YAML
prefix: apps
data-key: config
default-context: ${spring.application.name}
discovery:
health-check-path: /actuator/health
healthCheckInterval: 20s
scheme: http
enabled: true
address: ${server.address}
main:
allow-bean-definition-overriding: true
在本地没有docker的情况下,它能够正确解析地址,但在远程docker的情况下,它将返回容器ID。
有什么建议吗?
答案 0 :(得分:0)
在Docker容器中运行时可能会遇到的问题是,当尝试恢复hostname
或IP Address
时,您将获得内部Docker hostname
和内部{{1 }}。
我曾在类似问题中使用的一种解决方案是:
例如:
设置属性以从外部获取地址:
IP Address
运行容器时,请提供discovery:
health-check-path: /actuator/health
healthCheckInterval: 20s
scheme: http
enabled: true
address:${HOSTNAME:server.address}
属性的值:
HOSTNAME
这样,外部进行健康检查的任何人都可以访问您在服务中定义的端点。
希望有帮助。