Skip to main content

为Eureka环境下的.Net微服务系统配置网络

· 2 min read
Ferdinand Su

显然,为各个不同的微服务指定其对应的友好hostname会极大地方便调试;为此,我们需要先创建一个自己的网络(不可以用默认网络哦!)

docker network create <网络名>

然后,为各个需要跑在这个网络里的C#项目修正lunchSettings.json

"Docker": {
"commandName": "Docker",
"dockerfileRunArguments": "--network <网络名> --hostname <你喜欢的hostname>",
"launchBrowser": false,//显然,大部分微服务不需要launchBrowser
"launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/swagger",
"publishAllPorts": true
}

appsettings.json

"spring": {
"application": {
"name": "一个微服务的名字"
}
},
"eureka": {
"client": {
"serviceUrl": "http://eureka:8761/eureka/",//注意这里eureka server的指代也使用了hostname
"shouldFetchRegistry": "true",
"shouldRegisterWithEureka": true,
"validateCertificates": false
},
"instance": {
"port": "80",
"ipAddress": "<你刚刚设定的hostname>",
"preferIpAddress": false
}
},

最后,记得把eureka server连上去,注意使用--alias eureka

docker network connect dsc magical_hopper --alias eureka

一些坑

preferIpAddress

在k8s下必须设为true:"instance": { "preferIpAddress": true }

DiscoveryHttpHandler

在注入HttpClientFactory时,调用CreateClient时还需要记得传递名称作为参数