我尝试设置eureka.instance.hostname、preferIpAddress、ipAddress、instanceId,但实例id仍然是docker容器id。如何将它们设置为 IP 地址?
eureka:
instance:
hostname: ${server.host}
preferIpAddress: true
ipAddress: ${server.host}
instanceId: ${server.host}
client:
serviceUrl:
defaultZone:
http://pitbull:j1n3v9z9j3nc@${server.remote}:8888/eureka/
最佳答案
默认情况下,容器主机名是容器 ID。您可以使用 docker run
命令中的 --hostname
标志覆盖此设置。
不过,我认为这不是问题的根源..
听起来您真正想要的是将服务配置设置为绑定(bind)到容器的本地主机地址,然后:
- 使用
docker run --net=host ...
运行 docker 镜像(将容器直接绑定(bind)到主机网络接口(interface)/IP) - 使用
docker run --net=bridge -p 8888:8888
运行docker镜像(--net=bridge
是默认运行模式,不需要)-p 8888:8888
会将端口从您的主机 IP 转发到 docker 容器运行时。
关于docker - 如何在docker中为spring-cloud服务注册IP地址而不是容器ID中的服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46459555/