Spring Boot Docker com.netflix.discovery.shared.transport.TransportException:无法在任何已知服务器上执行请求

时间:2018-06-13 14:51:12

标签: docker spring-boot

这是我的Eureka服务器 application.property

# set port
server.port=8761
# no need to register the server with the server
eureka.client.register-with-eureka=false
# don't need a local copy of the registry
eureka.client.fetch-registry=false

Eureka Server dockerfile

FROM openjdk:8
ADD target/eureka-service.jar eureka-service.jar
EXPOSE 8761
ENTRYPOINT ["java", "-jar", "eureka-service.jar"]

Eureka Client application.property

eureka.client.serviceUrl.defaultZone= http://localhost:8761/eureka/
eureka.client.registerWithEureka=true
eureka.client.fetchRegistry=true

Eureka Client dockerfile

FROM openjdk:8
ADD target/foo.jar foo.jar
EXPOSE 8971
ENTRYPOINT ["java", "-jar", "foo.jar"]

Eureka服务器使用 @EnableEurekaServer 进行注释,Eureka客户端使用 @EnableEurekaClient 进行注释

客户端已成功注册EurekaServer,一切正常。但是当我尝试使用下面的

在Docker中运行它时

多克尔-Compose.yml

版本:" 2.0"

services:
 foo-service:
  build: foo/
  ports: 
  - "8761:8761"

 bar-service:
  build: bar/
  ports: 
  - "8971:8971"

客户端无法注册服务器。并且低于stacktrace。

com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server
      |     at com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient.execute(RetryableEurekaHttpClient.java:111) ~[eureka-client-1.6.2.jar!/:1.6.2]
      |     at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.register(EurekaHttpClientDecorator.java:56) ~[eureka-client-1.6.2.jar!/:1.6.2]
      |     at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$1.execute(EurekaHttpClientDecorator.java:59) ~[eureka-client-1.6.2.jar!/:1.6.2]
      |     at com.netflix.discovery.shared.transport.decorator.SessionedEurekaHttpClient.execute(SessionedEurekaHttpClient.java:77) ~[eureka-client-1.6.2.jar!/:1.6.2]
      |     at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.register(EurekaHttpClientDecorator.java:56) ~[eureka-client-1.6.2.jar!/:1.6.2]
      |     at com.netflix.discovery.DiscoveryClient.register(DiscoveryClient.java:798) ~[eureka-client-1.6.2.jar!/:1.6.2]
      |     at com.netflix.discovery.InstanceInfoReplicator.run(InstanceInfoReplicator.java:104) [eureka-client-1.6.2.jar!/:1.6.2]
      |     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_171]
      |     at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_171]
      |     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [na:1.8.0_171]
      |     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [na:1.8.0_171]
      |     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_171]
      |     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_171]
      |     at java.lang.Thread.run(Thread.java:748) [na:1.8.0_171]

我真的是Docker中的新人,有什么帮助吗?

1 个答案:

答案 0 :(得分:0)

+--------+--------+ | testID | Status | +--------+--------+ | 1 | fail | | 2 | pass | | 3 | fail | +--------+--------+ 中的update Table1 a inner join ( select b.testID, iif(min(b.status)=max(b.status) and min(b.status)='pass','pass','fail') as v from Table2 b group by b.testID ) c on a.testID = c.testID set a.testStatus = c.v 修改为:

testID

$aa=array("a" => 1, "b" => 2, "c" =>3, "d" => 4); foreach($aa as $value) { $temp[]=$value; } echo implode(",",$temp); 中的dockerfile修改为:

EurekaServer

FROM openjdk:8 ADD target/eureka-service.jar eureka-service.jar EXPOSE 8761 ENTRYPOINT java -jar Eureka-0.0.1-SNAPSHOT.jar eureka 的属性文件中,修改此属性

dockerfile

现在分别为两个应用程序构建映像。 在EurekaClient中,您将需要添加一些配置以将客户端与服务器链接。修改后的docker-compose如下所示:

FROM openjdk:8
ADD target/foo.jar foo.jar
EXPOSE 8971
ENTRYPOINT java -jar foo.jar foo

干杯!