问题描述

使用 docker 集群部署微服务时,注册到 nacos 上的 ip 会使用 docker 容器的虚拟内网 ip 作为注册地址,这会导致集群部署服务时,nacos 无法解析对应服务的 ip。

解决方案

参考:注册服务获取 IP 的问题 · Issue #310 · alibaba/nacos (github.com)

方法一:

docker compose 配置文件中设置网络模式为 host

1
2
YAML
network_mode: host

host 网络模式是直接使用宿主机的 IP 地址与外界进行通信

方法二:

nacos 配置指定注册 ip/host

application.yml 配置文件中添加如下配置即可:

1
2
3
4
5
6
7
YAML
spring:
cloud:
nacos:
discovery:
# 配置host,避免docker部署nacos注册服务ip为内网地址
ip: xxx