docker 中的 Eureka 客户端未与 Eureka 服务器连接

Tan*_*moy 5 docker spring-boot netflix-eureka

我有一台尤里卡服务器。

server:
  port: 8761
eureka:
  client:
    registerWithEureka: false
    fetchRegistry: false
Run Code Online (Sandbox Code Playgroud)

我有一个尤里卡客户。

spring:
  application:
    name: mysearch
server:
  port: 8020
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka
  instance:
    preferIpAddress: true
Run Code Online (Sandbox Code Playgroud)

我的尤里卡客户端在 docker 容器中运行。

FROM java:8
COPY ./mysearch.jar /var/tmp/app.jar
EXPOSE 8180
CMD ["java","-jar","/var/tmp/app.jar"]
Run Code Online (Sandbox Code Playgroud)

我正在启动 eureka 服务器java -jar eureka-server.jar 之后,我正在使用sudo docker build -t web .and启动 eureka 客户端的 docker 实例 sudo docker run -p 8180:8020 -it web。我可以从浏览器访问尤里卡客户端和服务器,但客户端没有连接尤里卡服务器。我无法在尤里卡服务器仪表板中看到客户端。我收到以下错误和警告。

WARN 1 --- [tbeatExecutor-0] c.n.d.s.t.d.RetryableEurekaHttpClient    : Request execution failed with message: java.net.ConnectException: Connection refused (Connection refused)
ERROR 1 --- [tbeatExecutor-0] com.netflix.discovery.DiscoveryClient    : DiscoveryClient_FLIGHTSEARCH/98b0d95fd668:flightsearch:8020 - was unable to send heartbeat!
INFO 1 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient    : DiscoveryClient_FLIGHTSEARCH/98b0d95fd668:flightsearch:8020: registering service...
ERROR 1 --- [nfoReplicator-0] c.n.d.s.t.d.RedirectingEurekaHttpClient  : Request execution error
WARN 1 --- [nfoReplicator-0] c.n.d.s.t.d.RetryableEurekaHttpClient    : Request execution failed with message: java.net.ConnectException: Connection refused (Connection refused)
WARN 1 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient    : DiscoveryClient_FLIGHTSEARCH/98b0d95fd668:flightsearch:8020 - registration failed Cannot execute request on any known server
WARN 1 --- [nfoReplicator-0] c.n.discovery.InstanceInfoReplicator     : There was a problem with the instance info replicator
Run Code Online (Sandbox Code Playgroud)

我在 AWS EC2 Ubuntu 实例中执行此操作。谁能告诉我我在这里做错了什么?

san*_*eti 4

server:
  ports:
      - "8761:8761"
eureka:
  client:
    registerWithEureka: false
    fetchRegistry: false
Run Code Online (Sandbox Code Playgroud)

通过上述更改,端口 8761 将在主机上公开并可以连接到服务器。当您使用 localhost “ http://localhost:8761/eureka ” 进行连接时,它正在主机上搜索端口 8761。

在 Eureka 客户端配置中使用主机 ip 而不是 localhost ,因为如果使用 localhost ,它会在容器内搜索端口 8761

http://hostip:8761/eureka