使用自定义IP从Docker注册到Eureka

Blu*_*lue 6 docker netflix-eureka

我在Docker VM中运行Spring Cloud Eureka.我有注册的服务,但是他们在Docker VM中使用他们的IP地址,但为了能够正确使用它们,我需要他们使用我可以从VM外部访问的IP地址.

例如在我的VM中使用172.xxx的寄存器和我可以使用192.168.xxx从我的浏览器访问REST接口我需要它们注册为192.168.xxx

如何告诉我的服务注册特定的IP地址?

Yos*_*har 5

先前的两个答案都是正确的,但我会让复制粘贴变得更加容易。

您应该做的是在启动容器时在主机IP中添加一个环境变量,并在Spring Boot application.yml文件中包括它。

application.yml

eureka:
  instance:
    # Necessary for Docker as it doesn't have DNS entries
    prefer-ip-address: true
    # Necessary for Docker otherwise you will get 172.0.0.x IP
    ip-address: "${HOST}"
  client:
    serviceUrl:
      # Location of your eureka server
      defaultZone: http://192.168.0.107:8761/eureka/
Run Code Online (Sandbox Code Playgroud)

使用Docker运行

docker run -p <port>:<port> -e HOST='192.168.0.106' <image name>
Run Code Online (Sandbox Code Playgroud)

使用docker-compose运行

my_service:
  image: image_name
  environment:
    - HOST=192.168.0.106
  ports:
    - your_port:container_port
Run Code Online (Sandbox Code Playgroud)


Tyu*_*tyu 4

您可以在您的application.yml

eureka:
    instance:
        ipAddress: 192.168.x.x
Run Code Online (Sandbox Code Playgroud)