Невозможно подключиться к Docker. net Core 31. Контейнер SDK с хоста - PullRequest
0 голосов
/ 06 января 2020

Я пытаюсь получить доступ к. net ядру webapi, размещенному в контейнере docker, из браузера на хосте (Win 10 Pro 1903; Docker Desktop 2.1.0.5 с использованием Linux контейнеров).

Ничего особенного в вебапи; просто новый dotnet new webapi проект, использующий. net core 3.1 sdk.

Я могу получить доступ к webapi через docker интерактивный терминал и через kitemati c, так что все там блестит. Все начинает сбиваться с пути, когда я пытаюсь подключиться к контейнеру с хоста. Доступ к контейнеру из браузера / сбой проверки связи (используется localhost, 127.0.0.1 и ip контейнера).

Я убедился, что все обновлено, несколько раз перенастроил порты и даже попробовал что-то на ma c с теми же результатами.

Вот файл docker

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build-env
WORKDIR /app

COPY *.csproj ./
RUN dotnet restore
COPY . ./
RUN dotnet publish -c Release -o out

FROM mcr.microsoft.com/dotnet/core/sdk:3.1
WORKDIR /app
COPY --from=build-env /app/out .

ENTRYPOINT ["dotnet", "webapi.dll"]

Я не уверен, что это проблема с изображением SDK (следует ли мне использовать вместо nano-образа) или если это проблема с конфигурацией Kestral (в чем я сомневаюсь).

Любые предложения будут потрясающими

EDIT Docker -Compose

services:

  app:
    image: fooey/webapi
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "8000:5001"

и для ручного запуска docker run -p 8000:5001 --name api webapi

1 Ответ

0 голосов
/ 07 января 2020

Итак, проблема оказалась в нескольких вещах.

  1. Образ среды выполнения, который я использовал, неправильный, это не должен быть SDK
  2. Среда выполнения (и SDK) оба переопределяют launchSettings. json для использования порта 80 , выкрикивают Wael Kdouh и Kendall Roden

Надлежащим способом справиться с этим является следующий Dockerfile:

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build-env
WORKDIR /app

COPY *.csproj ./
RUN dotnet restore
COPY . ./
RUN dotnet publish -c Release -o out

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
WORKDIR /app
ENV ASPNETCORE_URLS http://+:5000
COPY --from=build-env /app/out .

ENTRYPOINT ["dotnet", "webapi.dll"]
...