【问题标题】:Running Eureka Server and Eureka Client in Docker using spring boot使用 Spring Boot 在 Docker 中运行 Eureka Server 和 Eureka Client
【发布时间】:2022-01-26 08:53:50
【问题描述】:

希望你做得很好,我遇到一个问题并尝试解决很多天但失败了。我有两个spring boot微服务,一个叫客户端,一个叫服务端。当我对微服务进行 dockerize 并运行服务器时,它运行正常,但是当我尝试运行客户端时,它给了我一个错误。错误是这样的。

2021-12-27 11:01:45.646  WARN 1 --- [nfoReplicator-0] c.n.discovery.InstanceInfoReplicator     : There was a problem with the instance info replicator


com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server

at com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient.execute(RetryableEurekaHttpClient.java:112) ~[eureka-client-1.10.17.jar!/:1.10.17]

at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.register(EurekaHttpClientDecorator.java:56) ~[eureka-client-1.10.17.jar!/:1.10.17]

at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$1.execute(EurekaHttpClientDecorator.java:59) ~[eureka-client-1.10.17.jar!/:1.10.17]

at com.netflix.discovery.shared.transport.decorator.SessionedEurekaHttpClient.execute(SessionedEurekaHttpClient.java:77) ~[eureka-client-1.10.17.jar!/:1.10.17]

at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.register(EurekaHttpClientDecorator.java:56) ~[eureka-client-1.10.17.jar!/:1.10.17]

at com.netflix.discovery.DiscoveryClient.register(DiscoveryClient.java:876) ~[eureka-client-1.10.17.jar!/:1.10.17]

at com.netflix.discovery.InstanceInfoReplicator.run(InstanceInfoReplicator.java:121) ~[eureka-client-1.10.17.jar!/:1.10.17]

at com.netflix.discovery.InstanceInfoReplicator$1.run(InstanceInfoReplicator.java:101) ~[eureka-client-1.10.17.jar!/:1.10.17]

at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[na:na]

at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[na:na]

at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) ~[na:na]

at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1135) ~[na:na]

at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[na:na]

at java.base/java.lang.Thread.run(Thread.java:831) ~[na:na]

服务器 application.yml 文件是;

server.port: 8761

eureka:
  instance:
    hostname: eurekaserver
  client:
    registerWithEureka: false
    fetchRegistry: false

spring:
  application:
    name: EUREKA-SERVER

而客户端的application.yml文件是这样的;

server:
  port: 8080


spring:
  application:
    name: EUREKA-CLIENT

eureka:
  instance:
    hostname: eurekaclient
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka

我试试defaultZone: http://eurekaserver:8761/eureka。但得到了同样的错误。

Client的docker文件是:

FROM openjdk:17-jdk-alpine
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} eurekaclient.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/eurekaclient.jar"]

提前致谢 :)

【问题讨论】:

  • 您何时看到上述问题 - 在客户端启动期间?假设您能够启动这两个服务,localhost:8761 会显示什么?
  • localhost:8761 显示我的服务器,它运行正常。
  • 是否显示注册客户?
  • 否,当我运行客户端容器时,我在日志文件中看到上述错误。 There was a problem with the instance info replicator
  • 客户端试图找到服务器,但它失败了,我不知道为什么。

标签: spring-boot docker microservices netflix-eureka


【解决方案1】:

尝试以下方法: service-url 属性后的标签(在 YML 中可以别名为 serviceUrl)是 HashMap KEY,而不是属性标签。所以它必须以任何方式保存为 Camel Case 标签!

eureka.client.service-url.defaultZone=http://[myIP@]:8787/eureka

【讨论】:

  • 我们如何获取IP。
猜你喜欢
  • 2020-10-27
  • 2020-11-22
  • 2021-04-16
  • 2019-07-24
  • 1970-01-01
  • 1970-01-01
  • 2018-09-23
  • 2018-02-10
  • 2021-04-16
相关资源
最近更新 更多