使用 consul 启动 jHipster 微服务时出错
Posted
技术标签:
【中文标题】使用 consul 启动 jHipster 微服务时出错【英文标题】:Error starting jHipster Microservices with consul 【发布时间】:2017-07-12 05:44:31 【问题描述】:我正在尝试使用此tutorial 构建示例微服务应用程序。 Jhipster 版本是 4.0.6 所以我创建了网关、服务并使用这个命令启动了领事:
docker-compose -f src/main/docker/consul.yml up
来自我的网关目录。 但是Spring Boot启动时出现错误,日志如下:
2017-02-22 11:52:25.679 ERROR 3168 --- [ restartedMain] o.s.c.c.c.ConsulPropertySourceLocator : Fail fast is set and there was an error reading configuration from consul.
2017-02-22 11:52:32.491 WARN 3168 --- [ restartedMain] o.s.boot.SpringApplication : Error handling failed (ApplicationEventMulticaster not initialized - call 'refresh' before multicasting events via the context: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@2a5b2096: startup date [Thu Jan 01 03:00:00 AST 1970]; parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@5108df79)
com.ecwid.consul.transport.TransportException: java.net.ConnectException: Connection refused: connect
您能帮忙解决这个问题吗?
更新: 我发现该应用程序尝试在 staptup 上向 URL 发出 GET 请求:
http://localhost:8500/v1/kv/config/armory,dev/?recurse&token=
但 Consul K/V 存储中存储的唯一数据是:
KEY: config/application/data
VALUE:
configserver:
name: Docker Consul Service
status: Connected to Consul Server running in Docker
jhipster:
security:
authentication:
jwt:
secret: my-secret-token-to-change-in-production
【问题讨论】:
【参考方案1】:如果 consul 在 dev 配置文件中运行,则必须将应用程序 yaml 配置复制到您的 consul 实例 as explained in the doc 到 central-server-config
目录中;如果 consul 在 prod 配置文件中运行,则必须复制到其 git repo 中。
因此,假设您的应用名为“armory”,您应该将您的 src/main/resources/config/application.yml
复制到 armory.yml
以及每个配置文件(例如,application-dev.yml
到 armory-dev.yml
)
【讨论】:
非常感谢!您能否协助将默认的领事端口从“localhost”覆盖到 docker 的端口?我应该在哪里更改它? 不知道,你查看过你应用的 bootstrap.yml 吗? 我也遇到了同样的问题,@Tolledo 你找到解决方案了吗? @Martin,是的。只需使用 DockerToolbox 重新安装 docker,问题就会消失。以上是关于使用 consul 启动 jHipster 微服务时出错的主要内容,如果未能解决你的问题,请参考以下文章
JHipster技术栈定制 - 基于UAA的微服务之间安全调用
微服务-SpringCloud学习系列:注册中心Consul