Docker ASP.NET核心微服务
我正在使用docker和asp.net core 2创建微服务。我已经创建了2个微服务和一个web api。我正在尝试使用HttpClient从web api调用微服务端点。下面是web api控制器代码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
[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