Asp.net core 使用eureka的服务发现在docker容器中不起作用

Asp.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

当我在docker容器中运行API网关时,它无法找到在eureka中注册的服务

API网关

--ocelot.json

{
  "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服务上是否有任何日志条目可指示它是否收到过任何流量?