解决对docker-compose

时间:2016-04-07 14:37:15

标签: java docker-compose spring-cloud microservices spring-cloud-config

我有一个Spring启动微服务连接到Spring配置服务来获取配置,但显然,服务无法在配置服务器完全启动并运行后启动,否则它将永远无法再连接(?)

这是我在运行docker-compose文件时在服务控制台中看到的错误:

  

2016-04-07 14:25:51.305 WARN 1 --- [主要]   c.c.c.ConfigServicePropertySourceLocator:找不到   PropertySource:GET请求的I / O错误   " http://configserver:8888/myservice/default":拒绝连接;   嵌套异常是java.net.ConnectException:连接被拒绝

这是我的docker-compose文件:

discovery:
  image:discovery-service
  ports:
   - "8761:8761"
configserver:
  image:config-service
  ports:
   - "8888:8888"
  links:
   - discovery
myservice:
  image:my-service
  ports:
   - "9006:9006"
  links:
   - discovery
   - configserver

这是服务bootstrap.yml config:

spring:
  application:
    name: myservice
  cloud:
    enabled: true
    config:
      uri: http://configserver:8888
encrypt:
  failOnError: false

一旦两个服务都在Eureka(发现)上运行并注册,我尝试在/refresh上调用myservice但它仍然失败并返回相同的错误。

如果我重新启动docker实例,它会毫无问题地连接。

这是否意味着我必须让配置服务器持续运行才能做到这一点?

1 个答案:

答案 0 :(得分:1)

如果配置服务器在启动时尚未就绪,则需要将客户端应用程序配置为更强大。 user guide中有一节。 TL; DR包括spring-retry并设置spring.cloud.config.failFast=true