我尝试使用docker-compose在本地运行2个简单服务(Ubuntu):eureka服务器和配置服务器(也是eureka客户端)。这两个都有简单的dockerfiles运行java -jar
,暴露他们的端口,并单独工作正常。我还尝试添加eureka.client.service-url.defaultZone=http://company-service-discovery:8761/eureka
以查看它是否会自行注册,并且有效。
我的配置服务器无法成功注册到eureka服务器,我已经用Google搜索过,我见过的任何内容都没有帮助我解决这个问题。
根据https://docs.docker.com/compose/networking/上的docker-compose文档:
默认情况下,Compose会为您的应用设置单个网络。服务的每个容器都加入默认网络,并且可以被该网络上的其他容器访问,并且可以通过与容器名称相同的主机名发现。
使用以下示例web
应该能够使用postgres://db:5432
与数据库进行通信。
version: "3"
services:
web:
build: .
ports:
- "8000:8000"
db:
image: postgres
ports:
- "8001:5432"
我使用相同的方法来配置我的服务,但我的配置服务器在尝试注册时拒绝连接:
version: '3.3'
services:
company-service-discovery:
build: company-service-discovery/
ports:
- "8761:8761"
company-config-server:
build: company-config-server/
ports:
- "8888:8888"
links:
- company-service-discovery
server:
port: 8888
management:
security:
enabled: false
spring:
application:
name: company-config-server
cloud:
config:
server:
native:
search-locations: classpath:/shared
profiles:
include: native
eureka:
client:
service-url:
defaultZone: http://company-service-discovery:8761/eureka
spring:
application:
name: company-service-discovery
server:
port: 8761
management:
security:
enabled: false
2017-07-26 14:25:05.738 WARN 1 --- [nfoReplicator-0] c.n.d.s.t.d.RetryableEurekaHttpClient : Request execution failed with message: java.net.ConnectException: Connection refused (Connection refused)
2017-07-26 14:25:05.739 WARN 1 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient : DiscoveryClient_COMPANY-CONFIG-SERVER/365d20275ab0:company-config-server:8888 - registration failed Cannot execute request on any known server
我的配置有什么问题吗?我怎样才能使它发挥作用?
如果有任何信息缺失,请告诉我,我很乐意提供任何信息。
答案 0 :(得分:1)
将defaultZone
配置添加到Eureka服务器的属性中(并将service-url
更改为 配置服务器bootstrap.yml中的serviceUrl
< / EM> 强>)。
spring:
application:
name: company-service-discovery
eureka:
client:
serviceUrl:
defaultZone: http://company-service-discovery:8761/eureka
server:
port: 8761
management:
security:
enabled: false
答案 1 :(得分:0)
非常感谢。这篇文章解决了我的问题-使用docker将eureka客户端连接到eureka服务器。经过2天的搜索工作。我哭了。
所以基本上-
您应该在eureka客户端的application.properties/.yml中使用以下
eureka.client.service-url.defaultZone = http://eureka-server:8761/eureka
,在docker-compose.yml中,您的eureka服务名称应与-url主机名匹配,在我的情况下,该名称应为-eureka-server