Nacos环境下aspnetcore 服务docker多实例部署

【国内社区欺负netcore人少吗???】
其实主要要说明的就是一个问题,按照官网的推荐一套下来,在本地环境可以用nacos提供服务注册和发现功能,同时还能做配置文件的集中管理。这样综合了配置中心和服务注册发现功能的组件还有什么理由不去用呢?

一顿操作下来,没有上docker之前,一切都还好,噩梦从docker部署后开始。docker环境下的实例再注册到nacos的时候ip和端口总是docker内网端口,而且也无法用命令行覆盖。

网上的解决办法五花八门,但是就是没有关于dotnet的,在github上nacos-csharp-sdk项目只有区区的一个Issues,而且内容居然是。。。。


image.png

好吧,为了解决这个问题,先去看看java是怎么做的。在java中,可以直接在spring-boot的项目配置文件中直接指定服务发现的ip和端口,但是在.netsdk下面就根本没有对应功能。哎,这是逼死人啊,万般无奈只有自己下载源代码做拓展了。

image.png

下载源代码,导入自己的仓库,然后新建一个叫做Discover的option类。


image.png

接下来,把我们的配置在程序启动的时候读进去。


image.png

【=============分割
上述的修改,也并不是必须在nacos源代码里面去改,但是接下来的代码可能就必须驱动nacos源码了
==============】

接下来操作这个文件:


image.png

目的就是在向Nacos通信的时候,上报自己的ip信息,如果我们自定义了discover:ip 和 discover:host 那么就直接用我们自定义的,否则还是走以前的老路(不支持docker部署)。

使用的时候,docker-compse内直接加入启动命令

dotnet xxx.dll --urls=http://*:80  discover:ip=docker宿主机的ip discover:port=docker宿主机映射的ip

注意 如果要让 自定义的命令在docker中生效,则一定要让命令处于 CmdArgs数组的第4个以后

你可能感兴趣的:(Nacos环境下aspnetcore 服务docker多实例部署)