docker运行Spring Cloud使用外部IP

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker运行Spring Cloud使用外部IP相关的知识,希望对你有一定的参考价值。

参考技术A 在多机器上docker部署Spring Cloud发现有一个问题,即在docker容器内部,Spring Cloud eureka实例只能获取到docker内部网络的IP,如172.x.x.x,并将其注册到注册中心,此时其他服务通过该IP在docker外部无法访问该服务。以下有两种解决方法:

启动容器时将宿主机的IP加到容器环境变量中然后在Spring Boot application.yml 中使用该环境变量。

application.yml

启动docker时加入 HOST 环境变量:

或使用docker-compose:

将容器以host模式运行

在Spring Cloud中配置IP访问

多网卡的情况

指定IP在某些场景下很有用,如某台服务器有eth0、eth1和eth2三块网卡,但是eth1可以被其它的服务器访问;如果Eureka Client将eth0或者eth2注册到Eureka Server上,其它微服务就无法通过这个IP调用该微服务的接口。

若在生产环境中使用,一般就不会直接使用IP注册到eureka注册中心了,由于生产环境通常由k8s集群或其他类似docker集群进行管理,因此一般会使用服务名等进行注册,由k8s再转发到具体的服务上。

参考链接:

以上是关于docker运行Spring Cloud使用外部IP的主要内容,如果未能解决你的问题,请参考以下文章

结合Docker运行Spring Cloud微服务的多种方式

如何使用windows版Docker并在IntelliJ IDEA使用Docker运行Spring Cloud项目

Spring Cloud项目部署docker开启2375端口

使用docker发布spring cloud应用

使用 Spring Cloud DataFlow 在无限运行的应用程序中编排长时间运行的外部批处理作业是不是合适?

Spring Cloud Consul 和 Consul Clients dockerized