[英]Eureka Client Registration Failed in Docker compose: Failing to register as client - but eureka server & client is individually up & running
我有一個Eureka Server的 Spring Boot 應用程序:
application.yml(尤里卡服務器)
server:
port: 8761
spring:
application:
name: eureka
eureka:
client:
register-with-eureka: false
fetch-registry: false
我有一個尤里卡客戶端 - 比如說 microservice2
application.yml(尤里卡客戶端 - microservice2)
spring:
application:
name: second-feign-client
server:
port: 8082
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka
Dockerfile:(對於 eureka-server 應用程序和 microservice2 應用程序都相同)
FROM openjdk:8-jdk-alpine
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
本地,Eureka客戶端, microservice2 ,完美注冊到Eureka Server。 兩者都是 Spring Boot 應用程序。 我已經對這兩個應用程序進行了 dockerized,並推送到了 docker hub。 我正在嘗試在 docker-compose 中運行這兩個應用程序,但是 eureka 客戶端無法使用 docker-compose 在 eureka 服務器中注冊。
我收到此錯誤:
microservice2_1 | 2020-09-07 13:56:36.149 ERROR 1 --- [freshExecutor-0] com.netflix.discovery.DiscoveryClient : D
iscoveryClient_SECOND-FEIGN-CLIENT/379b7c698e87:second-feign-client:8082 - was unable to refresh its cache! status =
Cannot execute request on any known server
microservice2_1 |
microservice2_1 | com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known ser
ver
microservice2_1 | at com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient.execute(Retryab
leEurekaHttpClient.java:112) ~[eureka-client-1.9.25.jar!/:1.9.25]
microservice2_1 | at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.getApplications
(EurekaHttpClientDecorator.java:134) ~[eureka-client-1.9.25.jar!/:1.9.25]
microservice2_1 | at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$6.execute(Eurek
aHttpClientDecorator.java:137) ~[eureka-client-1.9.25.jar!/:1.9.25]
microservice2_1 | at com.netflix.discovery.shared.transport.decorator.SessionedEurekaHttpClient.execute(Session
edEurekaHttpClient.java:77) ~[eureka-client-1.9.25.jar!/:1.9.25]
microservice2_1 | at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.getApplications
(EurekaHttpClientDecorator.java:134) ~[eureka-client-1.9.25.jar!/:1.9.25]
microservice2_1 | at com.netflix.discovery.DiscoveryClient.getAndStoreFullRegistry(DiscoveryClient.java:1097) [
eureka-client-1.9.25.jar!/:1.9.25]
microservice2_1 | at com.netflix.discovery.DiscoveryClient.fetchRegistry(DiscoveryClient.java:1011) [eureka-cli
ent-1.9.25.jar!/:1.9.25]
microservice2_1 | at com.netflix.discovery.DiscoveryClient.refreshRegistry(DiscoveryClient.java:1533) [eureka-c
lient-1.9.25.jar!/:1.9.25]
microservice2_1 | at com.netflix.discovery.DiscoveryClient$CacheRefreshThread.run(DiscoveryClient.java:1500) [e
ureka-client-1.9.25.jar!/:1.9.25]
microservice2_1 | at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_212]
microservice2_1 | at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_212]
microservice2_1 | at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_
212]
microservice2_1 | at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_
212]
microservice2_1 | at java.lang.Thread.run(Thread.java:748) [na:1.8.0_212]
microservice2_1 |
eureka-server_1 | 2020-09-07 13:56:39.393 INFO 1 --- [a-EvictionTimer] c.n.e.registry.AbstractInstanceRegistry : R
unning the evict task with compensationTime 0ms
我已經經歷了已經討論過的相關問題docker-eureka-spring-boot我已經嘗試了所有這些討論過的選項,但仍然無法正常工作。
docker-compose.yml
version: "3.8"
services:
eureka-server:
image: dineshdontha67/eureka-server:latest
ports:
- "8761:8761"
networks:
- ms-network
microservice2:
image: dineshdontha67/microservice2:latest
ports:
- "8082:8082"
networks:
- ms-network
depends_on:
- eureka-server
environment:
server.port: 8082
eureka.instance.hostname: localhost
eureka.client.enabled: 'true'
#EUREKA_CLIENT_SERVICEURL_DEFAULTZONE: http://localhost:8761/eureka
# networks:
# - ms-network
# depends_on:
# - eureka-server
# server.port: 8082
# eureka.host: eureka-server
# eureka.client.enabled: 'true'
# eureka.instance.preferIpAddress: 'true'
networks:
ms-network:
driver: bridge
注意:docker-compose up 后,兩個 spring boot 應用程序單獨運行正常,但只有注冊失敗。
E:\eureka-server>docker-compose ps
Name Command State Ports
-----------------------------------------------------------------------------------
eureka-server_eureka-server_1 java -jar /app.jar Up 0.0.0.0:8761->8761/tcp
eureka-server_microservice2_1 java -jar /app.jar Up 0.0.0.0:8082->8082/tcp
參考回購:
microservices2 git repo(充當尤里卡客戶端): microservices2
eureka-server git repo(充當 eureka 服務器): eureka-server
請幫我解決這個問題。 萬分感謝!
version: "3.8"
services:
eureka-server:
image: dineshdontha67/eureka-server:latest
ports:
- "8761:8761"
networks:
- ms-network
environment:
eureka.instance.hostname: eureka-server
eureka.client.serviceUrl.defaultZone: http://eureka-server:8761/eureka/
microservice2:
image: dineshdontha67/microservice2:latest
ports:
- "8082:8082"
networks:
- ms-network
depends_on:
- eureka-server
environment:
server.port: 8082
eureka.client.serviceUrl.defaultZone: http://eureka-server:8761/eureka/
#EUREKA_CLIENT_SERVICEURL_DEFAULTZONE: http://localhost:8761/eureka
# networks:
# - ms-network
# depends_on:
# - eureka-server
# server.port: 8082
# eureka.host: eureka-server
# eureka.client.enabled: 'true'
# eureka.instance.preferIpAddress: 'true'
networks:
ms-network:
driver: bridge
根據您的服務名稱覆蓋主機名
干杯
version: "3.8"
networks:
ms-network:
name: ms-network
driver: bridge
services:
eureka-server:
image: dineshdontha67/eureka-server:latest
ports:
- "8761:8761"
networks:
- ms-network
environment:
eureka.instance.hostname: eureka-server
eureka.client.serviceUrl.defaultZone: http://eureka-server:8761/eureka
microservice2:
image: dineshdontha67/book-service:latest
ports:
- "8082:8080"
networks:
- ms-network
depends_on:
- eureka-server
environment:
server.port: 8082
eureka.client.serviceUrl.defaultZone: http://eureka-server:8761/eureka
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.