首页 > 解决方案 > 运行 Eureka 服务器和 Eureka 客户端时出现连接错误

问题描述

这是 Eureka 服务器的 Dockerfile

FROM openjdk:16-jdk-alpine
COPY target/EurekaDiscoveryService-0.0.1-SNAPSHOT.jar EurekaDiscoveryServer.jar
ENTRYPOINT ["java","-jar","EurekaDiscoveryServer.jar"]

这是 Eureka 客户端的 Dockerfile

FROM openjdk:16-jdk-alpine
COPY target/ApiGateway-0.0.1-SNAPSHOT.jar ApiGateway.jar
ENTRYPOINT ["java","-jar","ApiGateway.jar"]

这是 Eureka 服务器的 application.properties 文件

server.port=8010
spring.application.name=eureka-server
eureka.client.registerWithEureka=false
eureka.client.fetchRegistry=false
eureka.client.serviceUrl.defaultZone = http://localhost:8010/eureka
eureka.instance.prefer-ip-address=true

这是 Eureka 客户端的 application.properties

server.port=8082
spring.application.name=api-gateway
eureka.client.service-url.defaultZone=http://127.0.0.1:8010/eureka

我在用

-docker run -d -p 8010:8010 eurekaserver command to run Eureka server 
-docker run -p 8082:8082 apigateway command to run Eureka client

我收到以下错误:

请求执行失败并显示消息:“http://localhost:8010/eureka/apps/”的 GET 请求出现 I/O 错误:连接到 localhost:8010 [localhost/127.0.0.1] 失败:连接被拒绝;嵌套异常是 org.apache.http.conn.HttpHostConnectException: Connect to localhost:8010 [localhost/127.0.0.1] failed: Connection denied

标签: javaspring-bootdockermicroservicesnetflix-eureka

解决方案


我已修复错误

我刚刚检查了容器使用的IP地址docker inspect <CONTAINER_ID>,我知道我的尤里卡服务器的docker容器使用IP地址172.17.0.2而不是IP地址localhost(127.0.0.1)

我正在使用

docker run -e "eureka.client.service-url.defaultZone=http://172.17.0.2:8010/eureka" -p 8082:8082 apigateway

启动我的尤里卡客户端

所以我改为 eureka.client.serviceurl.defaultZone=http://127.0.0.1:8010/eureka 并且eureka.client.service-url.defaultZone=http://172.17.0.2:8010/eureka 它起作用了。

谢谢!!


推荐阅读