【國內(nèi)社區(qū)欺負(fù)netcore人少嗎局齿??悠菜?】
其實主要要說明的就是一個問題舰攒,按照官網(wǎng)的推薦一套下來,在本地環(huán)境可以用nacos提供服務(wù)注冊和發(fā)現(xiàn)功能悔醋,同時還能做配置文件的集中管理摩窃。這樣綜合了配置中心和服務(wù)注冊發(fā)現(xiàn)功能的組件還有什么理由不去用呢?
一頓操作下來,沒有上docker之前,一切都還好猾愿,噩夢從docker部署后開始鹦聪。docker環(huán)境下的實例再注冊到nacos的時候ip和端口總是docker內(nèi)網(wǎng)端口,而且也無法用命令行覆蓋蒂秘。
網(wǎng)上的解決辦法五花八門泽本,但是就是沒有關(guān)于dotnet的,在github上nacos-csharp-sdk項目只有區(qū)區(qū)的一個Issues姻僧,而且內(nèi)容居然是规丽。。段化。嘁捷。
好吧,為了解決這個問題显熏,先去看看java是怎么做的雄嚣。在java中,可以直接在spring-boot的項目配置文件中直接指定服務(wù)發(fā)現(xiàn)的ip和端口喘蟆,但是在.netsdk下面就根本沒有對應(yīng)功能缓升。哎,這是逼死人啊蕴轨,萬般無奈只有自己下載源代碼做拓展了港谊。
下載源代碼,導(dǎo)入自己的倉庫橙弱,然后新建一個叫做Discover的option類歧寺。
接下來,把我們的配置在程序啟動的時候讀進去棘脐。
【=============分割
上述的修改斜筐,也并不是必須在nacos源代碼里面去改,但是接下來的代碼可能就必須驅(qū)動nacos源碼了
==============】
接下來操作這個文件:
目的就是在向Nacos通信的時候蛀缝,上報自己的ip信息顷链,如果我們自定義了discover:ip 和 discover:host 那么就直接用我們自定義的,否則還是走以前的老路(不支持docker部署)屈梁。
使用的時候嗤练,docker-compse內(nèi)直接加入啟動命令
dotnet xxx.dll --urls=http://*:80 discover:ip=docker宿主機的ip discover:port=docker宿主機映射的ip
注意 如果要讓 自定義的命令在docker中生效,則一定要讓命令處于 CmdArgs數(shù)組的第4個以后