0. 背景
我 docker-compose 将我 SrpingBoot 微服务部署在 docker 容器中,在部署 Euraka 时 总是失败,无法连接到 Euraka服务器,经过各种寻找终于解决,记录成本文。
1. 问题描述
将要连接的 Euraka 客户机在连接 Euraka 时提示“连接拒绝”,或者“无法找到服务“
2. 解决
确保以下几处配置:
-
1) eureka 工程的 application.yml 中的 spring.application.name 指定。比如我这里叫“eureka”
-
2)docker-compose.yaml 配置文件中 services 配置文件下存在一个叫“eureka”的服务,名字同上。
-
3)重点,重点,重点。客户机服务配置。在 docker-compose.yaml 配置文件中 ,要连接 enreka 的客户机服务的配置项中的重要配置如下:
(a). 指定 links: - eureka 。
(b). 配置环境变量(environment):EUREKASERVER_URI: "http://eureka:8761/eureka/" -
4)客户端微服务工程目录下的 application.yml 配置 eureka.client.serviceUrl.defaultZone: ${EUREKASERVER_URI:http://localhost:8761/eureka/}
说明:
links 配置项指定了 docker 客户端微服务 通过 eureka 这个名字进行连接。然后就可以使用 http://eureka:8761/eureka/ 配置发现服务的地址了。
3. 附录:我的配置文件
eureka 工程的 application.yml
server:
port: ${PORT:8761}
spring:
application:
name: eureka # 将在 Eureka 注册的服务的逻辑名称
profiles:
active: dev
eureka:
client:
registerWithEureka: false #服务注册,是否将自己注册到Eureka服务中
fetchRegistry: false #服务发现,是否从Eureka中获取注册信息
server:
waitTimeInMsWhenSyncEmpty: 5
docker-compose. 的配置文件 docker-compose.yaml
version: '3.1'
services:
eureka:
build: ./eureka-service
ports:
- 8761:8761
environment:
PORT: "8761"
PROFILE: "dev"
zuul:
build: ./zuul
ports:
- 11111:11111
links:
- eureka
environment:
PORT: "11111"
PROFILE: "dev"
EUREKA_SERVER: "eureka"
EUREKASERVER_PORT: "8761"
EUREKASERVER_URI: "http://eureka:8761/eureka/"
article:
build: ./article-service
links:
- eureka
environment:
PORT: "11400"
PROFILE: "dev"
EUREKA_SERVER: "eureka"
EUREKASERVER_PORT: "8761"
EUREKASERVER_URI: "http://eureka:8761/eureka/"
user:
build: ./user-service
links:
- eureka
environment:
PORT: "11300"
PROFILE: "dev"
EUREKA_SERVER: "eureka"
EUREKASERVER_PORT: "8761"
EUREKASERVER_URI: "http://eureka:8761/eureka/"
客户端微服务 工程的 application.yml
server:
port: ${PORT:11111}
spring:
application:
name: zuul # 将在 Eureka 注册的服务的逻辑名称
eureka:
instance:
preferIpAddress: true
client:
registerWithEureka: true
fetchRegistry: true
serviceUrl:
defaultZone: ${EUREKASERVER_URI:http://localhost:8761/eureka/}
END
网友评论