首页 > 解决方案 > 在另一台主机上的 Netflix eureka 服务发现服务器中远程 dockerised spring boot 应用程序注册

问题描述

我们在一台主机上托管了 Netflix Eureka 服务发现服务器和 API 网关,并在另一台主机上拥有一个 dockerized spring boot 服务当我们将该服务注册到 Eureka 服务发现服务器时,它需要容器 IP 地址。因此,当我们按预期调用该服务时,未找到该服务。那么将远程 docker 服务注册到服务发现服务器时的最佳实践是什么。

标签: dockermicroservicesnetflix-eurekaspring-cloud-netflixnetflix

解决方案


一种方法是使用环境变量来设置主机 IP。

假设您使用 *.yml 文件作为服务配置文件,您可以在其中设置如下内容:

eureka:
  instance:
    preferIpAddress: true
    ipAddress: "${HOST}"
  client:
    fetch-registry: true
    register-with-eureka: true
    serviceUrl:
      defaultZone: http://<eureka-host>:<eureka-port>/eureka/

因此,您可以将主机 IP 作为环境变量注入,同时使用您的服务破坏 docker 容器:

docker container run -e HOST=host_ip IMAGE_NAME

推荐阅读