Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker ASP.NET核心微服务_Docker_Asp.net Core_Microservices_Docker Container - Fatal编程技术网

Docker ASP.NET核心微服务

Docker ASP.NET核心微服务,docker,asp.net-core,microservices,docker-container,Docker,Asp.net Core,Microservices,Docker Container,我正在使用docker和asp.net core 2创建微服务。我已经创建了2个微服务和一个web api。我正在尝试使用HttpClient从web api调用微服务端点。下面是web api控制器代码 [HttpGet] public async Task<IEnumerable<string>> GetAsync() { var client = new HttpClient(); var d

我正在使用docker和asp.net core 2创建微服务。我已经创建了2个微服务和一个web api。我正在尝试使用HttpClient从web api调用微服务端点。下面是web api控制器代码

    [HttpGet]
    public async Task<IEnumerable<string>> GetAsync()
    {
        
        var client = new HttpClient();
        var data = await client.GetAsync("http://localhost:8081/api/values");

        return new string[] { "apigateway-value1", "apigateway-value2" };
    }
这是microservice Dockerfile

FROM microsoft/aspnetcore:2.0 AS base    
WORKDIR /app    
EXPOSE 80

FROM microsoft/aspnetcore-build:2.0 AS build    
WORKDIR /src    
COPY MicroserviceOne/MicroserviceOne.csproj MicroserviceOne/    
RUN dotnet restore MicroserviceOne/MicroserviceOne.csproj    
COPY . .    
WORKDIR /src/MicroserviceOne    
RUN dotnet build MicroserviceOne.csproj -c Release -o /app

FROM build AS publish    
RUN dotnet publish MicroserviceOne.csproj -c Release -o /app    

FROM base AS final    
WORKDIR /app    
COPY --from=publish /app .    
ENTRYPOINT ["dotnet", "MicroserviceOne.dll"]
问题是我收到一个错误“System.Net.Http.CurlException:无法连接到服务器”。如果我尝试使用命令访问同一端点,则从命令提示

curl -X GET -H Content-Type: application/json  http://localhost:808/api/values    

我正在获取数据。我真的不知道发生了什么。

您可以尝试使用hostname/ipaddress而不是localhost。“localhost”表示当前容器。

在您的情况下,可以使用带“-p”的docker run命令将容器端口与主机上的端口绑定。下面的命令使用主机的5003端口,并绑定到运行asp.net核心应用程序的名为“myaspapp”的容器的端口80

docker run -p 5003:80 myaspapp
然后,您可以使用在浏览器上打开应用程序https://localhost:50003url,也可以使用curl

你可以参考这个-

docker run -p 5003:80 myaspapp