Register to Eureka from Docker with a custom IP
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 includes it.
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/
Running with Docker
docker run -p <port>:<port> -e HOST='192.168.0.106' <image name>
Running with docker-compose
my_service: image: image_name environment: - HOST=192.168.0.106 ports: - your_port:container_port
You can configure it in your application.yml
:
eureka: instance: ipAddress: 192.168.x.x
Register to Eureka with a custom IP and a custom PORT:
server: port: 18090eureka: instance: prefer-ip-address: true ip-address: 10.150.160.21 non-secure-port: 8080
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.