I'm running Spring Cloud Eureka inside my Docker VM. I have services registering to it, but they use their IP adress from inside the Docker VM, but to be able to use them properly i need them to use the IP adress i can access from outside the VM.
For example inside my VM the register using 172.x.x.x and i can access the REST interface from my browser using 192.168.x.x.x. I need them to register as 192.168.x.x.x.
How can i tell my service to register with a specific IP adress?
You can configure it in your
application.yml
:Both previous answers are correct, but I'll make copy-pasting easier.
What you should do is add an environment variable with the host ip when starting your container and in your Spring Boot application.yml file include it.
application.yml
Running with Docker
Running with docker-compose
You can use environment variables in the eureka configuration in application.yml
In the following example I am using the
$HOST
and$PORT
environment variables to tell the eureka client what values to use. In my case, these variables are set by Mesos/Marathon. You may find other useful variables set by Docker.The following works for me:
Register to Eureka with a custom IP and a custom PORT:
I run into a situation where 10.150.160.21:8080 is mapped to 192.168.1.124:18090 over a firewall. The application is running on 192.168.1.124:18090 but have to register to Eureka with 10.150.160.21:8080.
It works for me.