在Docker中将Spring-cloud-config服务器托管为微服务

时间:2019-08-06 11:15:23

标签: spring-boot docker microservices netflix-eureka spring-cloud-config

如何在Docker容器中托管已注册为Eureka Client的Spring云配置服务器?

我的Spring Boot微服务架构包括以下组件:

  1. eureka服务器(Eureka作为服务注册表)
  2. 配置服务器(注册为Eureka客户端)
  3. 业务逻辑应用程序(注册为Eureka客户端)

这些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 个答案:

答案 0 :(得分:0)

(代表问题作者发布了解决方案,以便将其移至答案)

我已经解决了所报告的问题。容器之间存在连接问题。

我解决了通过创建自定义网络并在该网络中运行容器的问题。然后,我可以使用容器名称在容器之间建立连接。

例如,我的配置服务器现在可以使用URL-http://eureka-server:8761连接到Eureka。