Asp.net core 使用eureka的服务发现在docker容器中不起作用
当我在docker容器中运行API网关时,它无法找到在eureka中注册的服务 API网关 --ocelot.jsonAsp.net core 使用eureka的服务发现在docker容器中不起作用,asp.net-core,docker-compose,microservices,ocelot,steeltoe,Asp.net Core,Docker Compose,Microservices,Ocelot,Steeltoe,当我在docker容器中运行API网关时,它无法找到在eureka中注册的服务 API网关 --ocelot.json { "ReRoutes": [ { "DownstreamPathTemplate": "/api/values", "DownstreamScheme": "http", "UseServiceDiscovery": true, "ServiceName": "sampleservice", "Upstr
{
"ReRoutes": [
{
"DownstreamPathTemplate": "/api/values",
"DownstreamScheme": "http",
"UseServiceDiscovery": true,
"ServiceName": "sampleservice",
"UpstreamPathTemplate": "/sample-api/{catchAll}"
}
],
"GlobalConfiguration": {
"UseServiceDiscovery": true,
"ServiceDiscoveryProvider": {
"Type": "Eureka",
"Host": "myeurekaserver",
"Port": "8761"
}
}
}
--API网关的appsettings.json
{
"eureka": {
"client": {
"shouldRegisterWithEureka": false,
"serviceUrl": "http://myeurekaserver:8761/eureka/",
"ValidateCertificates": false
},
"instance": {
"appName": "gateway",
"hostName": "myeurekaserver",
"port": "7000"
}
}
}
服务配置——appsettings.json
{
"eureka": {
"client": {
"shouldRegisterWithEureka": true,
"serviceUrl": "http://myeurekaserver:8761/eureka/",
"ValidateCertificates": false
},
"instance": {
"appName": "sampleservice",
"hostName": "myeurekaserver",
"port": "7001"
}
}
}
docker compose.yml
version: '3.4'
services:
sampleapi:
image: ${DOCKER_REGISTRY-}sampleapi
ports:
- "7001:80"
networks:
- ecnetwork
build:
context: .
dockerfile: SampleAPI/Dockerfile
gateway:
image: ${DOCKER_REGISTRY-}gateway
ports:
- "7000:80"
networks:
- ecnetwork
build:
context: .
dockerfile: Gateway/Dockerfile
myeurekaserver:
image: ${DOCKER_REGISTRY-}myeurekaserver
ports:
- "8761:8761"
networks:
- ecnetwork
build:
context: .
dockerfile: MyEurekaServer/Dockerfile
networks:
ecnetwork:
external: true
当我运行命令docker compose up并检查时,我发现我的服务已在eureka服务器中注册,但我运行http://localhost:7000/sample-api/订单
它回来了
localhost当前无法处理此请求。HTTP错误500
我检查了我的控制台窗口,然后是API网关能够发现服务,这是日志
gateway_1 | dbug: Steeltoe.Discovery.Eureka.DiscoveryClient[0]
gateway_1 | FetchRegistryDelta returned: OK
gateway_1 | dbug: Steeltoe.Discovery.Eureka.DiscoveryClient[0]
gateway_1 | FetchRegistry succeeded
这是应用程序错误,请检查应用程序API网关 500内部服务器错误 当遇到意外情况且没有更具体的消息时给出的一般错误消息
尝试在没有Docker的情况下调试应用程序。在Docker中检查服务注册的端口是7000还是80?
然后查看您是否可以通过telnet在本地访问7000端口,在没有docker的情况下,它在本地运行得非常好。对于本地,我在
appsettings
中用localhost
替换了myurekaserver
您是否尝试进入网关容器并卷曲myurekaserver?您的myurekaserver容器名称是否适合您的配置?web服务上是否有任何日志条目可指示它是否收到过任何流量?