Микросервисы ASP.NET Core

Я создаю микросервисы, используя docker и asp.net core 2. Я создал 2 микросервиса и веб-api. Я пытаюсь вызвать конечную точку микросервиса из веб-API с помощью HttpClient. Ниже приведен код контроллера веб-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" };
    }

Это мой файл docker-compose.yml, в котором указан микросервис, который я пытаюсь вызвать.

microserviceone:

image: ${DOCKER_REGISTRY}microserviceone
build:
  context: .
  dockerfile: MicroserviceOne/Dockerfile
ports: 
- "8082:80"

Это 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    

Я получаю данные. Я действительно не знаю, что происходит.

Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
0
0
247
2

Ответы 2

Вы можете попробовать использовать hostname / ipaddress вместо localhost. «Localhost» представляет текущий контейнер.

В вашем случае вы можете использовать команду docker run с «-p», чтобы связать порт контейнера с портом на хосте. Приведенная ниже команда использует порт 5003 хоста и привязывается к порту 80 контейнера с именем «myaspapp», на котором запущено ваше основное приложение asp.net.

docker run -p 5003:80 myaspapp

Затем вы можете открыть приложение в браузере с помощью URL-адреса https: // локальный: 50003, а также использовать curl.

Можете сослаться на это - Создайте первое приложение ASP.NET Core в контейнере Docker

Другие вопросы по теме