简体   繁体   English

使用 spring 引导在 Docker 中运行 Eureka Server 和 Eureka Client

[英]Running Eureka Server and Eureka Client in Docker using spring boot

Hope you are doing good, I face a problem and try to solve it for many days but failed.希望你做得很好,我面临一个问题并尝试解决很多天但失败了。 I have two spring boot microservice, one is called the client and the second is called the server.我有两个spring启动微服务,一个叫客户端,一个叫服务端。 When I dockerize the microservices and run the server, it runs properly but when I try to run the client, it gives me an error.当我 dockerize 微服务并运行服务器时,它运行正常,但是当我尝试运行客户端时,它给了我一个错误。 the error is like.错误就像。

2021-12-27 11:01:45.646  WARN 1 --- [nfoReplicator-0] c.n.discovery.InstanceInfoReplicator     : There was a problem with the instance info replicator


com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server

at com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient.execute(RetryableEurekaHttpClient.java:112) ~[eureka-client-1.10.17.jar!/:1.10.17]

at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.register(EurekaHttpClientDecorator.java:56) ~[eureka-client-1.10.17.jar!/:1.10.17]

at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$1.execute(EurekaHttpClientDecorator.java:59) ~[eureka-client-1.10.17.jar!/:1.10.17]

at com.netflix.discovery.shared.transport.decorator.SessionedEurekaHttpClient.execute(SessionedEurekaHttpClient.java:77) ~[eureka-client-1.10.17.jar!/:1.10.17]

at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.register(EurekaHttpClientDecorator.java:56) ~[eureka-client-1.10.17.jar!/:1.10.17]

at com.netflix.discovery.DiscoveryClient.register(DiscoveryClient.java:876) ~[eureka-client-1.10.17.jar!/:1.10.17]

at com.netflix.discovery.InstanceInfoReplicator.run(InstanceInfoReplicator.java:121) ~[eureka-client-1.10.17.jar!/:1.10.17]

at com.netflix.discovery.InstanceInfoReplicator$1.run(InstanceInfoReplicator.java:101) ~[eureka-client-1.10.17.jar!/:1.10.17]

at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[na:na]

at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[na:na]

at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) ~[na:na]

at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1135) ~[na:na]

at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[na:na]

at java.base/java.lang.Thread.run(Thread.java:831) ~[na:na]

The Server application.yml file is;服务器 application.yml 文件是;

server.port: 8761

eureka:
  instance:
    hostname: eurekaserver
  client:
    registerWithEureka: false
    fetchRegistry: false

spring:
  application:
    name: EUREKA-SERVER

While the client application.yml file is like;而客户端 application.yml 文件就像;

server:
  port: 8080


spring:
  application:
    name: EUREKA-CLIENT

eureka:
  instance:
    hostname: eurekaclient
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka

I try defaultZone: http://eurekaserver:8761/eureka .我尝试defaultZone: http://eurekaserver:8761/eureka but got the same error.但得到了同样的错误。

The docker file of Client is: Client的docker文件为:

FROM openjdk:17-jdk-alpine
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} eurekaclient.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/eurekaclient.jar"]

Thanks in advance:)提前致谢:)

Try the following: The label after service-url property (which can be aliased as serviceUrl in YML) is a HashMap KEY, not a property label.请尝试以下操作:service-url 属性(在 YML 中可以别名为 serviceUrl)之后的 label 是 HashMap 密钥,而不是属性 label。 So it has to be kept as a Camel Case tag in any ways!所以它必须以任何方式作为 Camel Case 标签保存!

eureka.client.service-url.defaultZone=http://[myIP@]:8787/eureka eureka.client.service-url.defaultZone=http://[myIP@]:8787/eureka

you can't register to eureka server by passing localhost.您无法通过传递 localhost 来注册到 eureka 服务器。

what you can do, give the container name in place of localhost and create one network, and while running the images specify the network as well.你可以做什么,用容器名称代替 localhost 并创建一个网络,并在运行图像时指定网络。

Please follow the below steps.请按照以下步骤操作。

Let's say your eureka images name is -> eureka-server假设您的 eureka 图像名称是 -> eureka-server

first, create a network using the below command:首先,使用以下命令创建一个网络:

docker create network springcloud-ms docker 创建网络 springcloud-ms

run the eureka container and specify the network as well like below:运行 eureka 容器并指定网络,如下所示:

docker run --name eureka-container -p 8761:8761 --network springcloud-ms eureka-server docker 运行 --name eureka-container -p 8761:8761 --network springcloud-ms eureka-server

change the application.yml of eureka client as below:更改尤里卡客户端的application.yml如下:

server: port: 8080 spring: application: name: EUREKA-CLIENT eureka: instance: hostname: eurekaclient client: serviceUrl: defaultZone: http://eureka-container:8761/eureka服务器:端口:8080 spring:应用程序:名称:EUREKA-CLIENT eureka:实例:主机名:eurekaclient 客户端:serviceUrl:defaultZone:http://eureka-container:8761/eureka

then run the client image.然后运行客户端映像。 Let's say your client image name is client-service then use the below command:假设您的客户端图像名称是 client-service 然后使用以下命令:

docker run --name client-container -p 8080:8080 --network springcloud-ms client-service docker 运行 --name 客户端容器 -p 8080:8080 --network springcloud-ms 客户端服务

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Spring 启动 Eureka Server Client 在 docker 下抛出连接超时 - Spring boot Eureka Server Client throws connection timeouts under docker 如何在 Spring Boot 的 eureka 服务器上从 Grails 注册 eureka 客户端 - How to register eureka client from Grails on eureka server in Spring boot eureka客户端如何在spring boot 1.5.2中找到eureka服务器? - How does the eureka client find the eureka server in spring boot 1.5.2? docker 中的 Eureka 客户端未与 Eureka 服务器连接 - Eureka client in docker not connecting with Eureka server Spring Boot,Docker,Discovery eureka - Spring Boot, Docker, Discovery eureka Eureka Spring Boot客户端异常 - Eureka Spring Boot client exception Docker compose 中的 Eureka 客户端注册失败:无法注册为客户端 - 但 Eureka 服务器和客户端单独启动并运行 - Eureka Client Registration Failed in Docker compose: Failing to register as client - but eureka server & client is individually up & running 在 Spring 启动 Eureka Client eureka.client.service-url.defaultZone 是如何工作的以及如何添加新的 eureka 服务器? - In Spring Boot Eureka Client How does eureka.client.service-url.defaultZone work and how to add new eureka server? 使用 Spring Boot 的 Docker 和 Eureka 无法注册客户端 - Docker and Eureka with Spring Boot failing to register clients 使用 docker 时,如何在 Eureka 客户端中保持 Eureka 服务器 url 动态? - How do I keep the Eureka server url dynamic in the Eureka Client while using docker?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM