<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[Heck's  Blog]]></title> 
<link>https://www.heckjj.com/index.php</link> 
<description><![CDATA[一瞬间的决定，往往可以改变很多，事实上，让自己成功的往往不是知识，是精神！ 如果你总是为自己找借口，那只好让成功推迟。执行力，今天！]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[Heck's  Blog]]></copyright>
<item>
<link>https://www.heckjj.com/post//</link>
<title><![CDATA[Nacos微服务注册地址为Docker内网IP的解决办法]]></title> 
<author>Heck &lt;@hecks.tk&gt;</author>
<category><![CDATA[运维管理]]></category>
<pubDate>Mon, 05 Sep 2022 06:07:08 +0000</pubDate> 
<guid>https://www.heckjj.com/post//</guid> 
<description>
<![CDATA[ 
	Nacos微服务注册中心无法调用Docker容器中的服务<br/>前言：<br/>Nacos（注册中心）是通过 【 IP+PORT】 的形式调用其他服务。<br/><br/>问题：<br/><br/>Docker容器使用虚拟IP, 当Docker中的服务A,向Nacos注册的时候,Nacos获取到了Docker的内部IP, 导致另外一个服务B,想通过注册中心调用服务A, 但由于服务B从nacos注册中心获取到的是服务A的内部IP,这样导致了两个处于公网的微服务之间,无法互相访问!<br/><br/>解决办法：<br/><br/>将Docker中的服务网络配置与宿主机共用同一个IP, 此时服务向nacos注册的时候,nacos将会获取到宿主机的公网IP, 所以问题迎刃而解。<br/><br/>我的docker是使用docker-compose来启动的,具体配置如下:<br/><br/>version: &#039;3&#039;<br/>services:<br/>&nbsp;&nbsp;iap-system:<br/>&nbsp;&nbsp;&nbsp;&nbsp;build:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;context: ./<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dockerfile: Dockerfile-system<br/>&nbsp;&nbsp;&nbsp;&nbsp;restart: always<br/>&nbsp;&nbsp;&nbsp;&nbsp;ports:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- 19002:19002<br/>&nbsp;&nbsp;&nbsp;&nbsp;container_name: iap-system<br/>&nbsp;&nbsp;&nbsp;&nbsp;hostname: iap-system<br/>&nbsp;&nbsp;&nbsp;&nbsp;image: iap-system<br/>&nbsp;&nbsp;&nbsp;&nbsp;network_mode: &quot;host&quot;&nbsp;&nbsp;# 与宿主机共有一个IP<br/><br/>当然,配置了上述网络类型后, nacos是可以拿到宿主机的IP, 但是此时拿到的是宿主机的内网IP, 解决办法如下:<br/><br/>spring:<br/>&nbsp;&nbsp;cloud:<br/>&nbsp;&nbsp;&nbsp;&nbsp;inetutils:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ignored-interfaces: eth.*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# 忽略网卡，eth.*，正则表达式<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;preferred-networks: $&#123;discovery.server-ip&#125;&nbsp;&nbsp;&nbsp;&nbsp;# 选择符合前缀的IP作为服务注册IP, discovery.server-ip就是你的公网IP<br/><br/>解释:<br/><br/>启动 Docker的时候，用 --network 参数，可以指定网络类型<br/><br/>--network host<br/><br/>host： 主机网络使用 --network=host，此时，Docker 容器的网络会附属在主机上，两者是互通的。 例如，在容器中运行一个Web服务，监听8080端口，则主机的8080端口就会自动映射到容器中。<br/><br/>结果：<br/><br/>Nacos注册中心获取到宿主机IP, 微服务之间调用成功!<br/><br/>如有帮助,请赞赏鼓励!
]]>
</description>
</item><item>
<link>https://www.heckjj.com/post//#blogcomment</link>
<title><![CDATA[[评论] Nacos微服务注册地址为Docker内网IP的解决办法]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>https://www.heckjj.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>