如何在Docker容器中托管已注册为Eureka Client的Spring云配置服务器?
我的Spring Boot微服务架构包括以下组件:
这些Spring Boot应用程序在Windows本地计算机上运行良好。同样需要在Docker容器中托管。
步骤1: 我已经在Docker中创建了Eureka服务器的映像并作为容器执行。我可以使用以下网址访问eureka服务器-http://localhost:8761
步骤2: 我创建了一个用作Eureka客户端并作为容器执行的配置服务器的映像。启动此服务时,我遇到了错误。
下面是错误
ERROR 1 --- [ main] c.n.d.s.t.d.RedirectingEurekaHttpClient : Request execution error. endpoint=DefaultEndpoint{ serviceUrl='http://localhost:8761/eureka/}
com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused (Connection refused)
at com.sun.jersey.client.apache4.ApacheHttpClient4Handler.handle(ApacheHttpClient4Handler.java:187) ~[jersey-apache-client4-1.19.1.jar!/:1.19.1]
at com.sun.jersey.api.client.filter.GZIPContentEncodingFilter.handle(GZIPContentEncodingFilter.java:123) ~[jersey-client-1.19.1.jar!/:1.19.1]
at com.netflix.discovery.EurekaIdentityHeaderFilter.handle(EurekaIdentityHeaderFilter.java:27) ~[eureka-client-1.9.12.jar!/:1.9.12]
at com.sun.jersey.api.client.Client.handle(Client.java:652) ~[jersey-client-1.19.1.jar!/:1.19.1]
at com.sun.jersey.api.client.WebResource.handle(WebResource.java:682) ~[jersey-client-1.19.1.jar!/:1.19.1]
at com.sun.jersey.api.client.WebResource.access$200(WebResource.java:74) ~[jersey-client-1.19.1.jar!/:1.19.1]
at com.sun.jersey.api.client.WebResource$Builder.get(WebResource.java:509) ~[jersey-client-1.19.1.jar!/:1.19.1]
在Docker容器中运行时,配置服务器未向Eureka服务器注册。
我已尝试在许多博客中建议的配置服务器属性中包含以下键值:
线索1:eureka.client.service-url.defaultZone = http://localhost:8761/eureka/
线索2:eureka.client.service-url.defaultZone = http://eureka-server:8761/eureka/
这两个建议都行不通。
我该如何调试呢?
答案 0 :(得分:0)
(代表问题作者发布了解决方案,以便将其移至答案)。
我已经解决了所报告的问题。容器之间存在连接问题。
我解决了通过创建自定义网络并在该网络中运行容器的问题。然后,我可以使用容器名称在容器之间建立连接。
例如,我的配置服务器现在可以使用URL-http://eureka-server:8761连接到Eureka。