невозможно отправить запрос в основное приложение .net, размещенное в Docker - PullRequest
0 голосов
/ 20 ноября 2018

У меня есть проект по умолчанию VS2017 webAPI с поддержкой докеров для Linux.Когда я попытался создать образ, я столкнулся с проблемой типа «невозможно найти ... / docker-buildxxxx /», для ее решения я переместил файл dockerfile на один уровень вверх, где находятся файлы * .sln и .dockerignore.

Я успешно создал и запустил этот образ, но мне не повезло, что я принял запрос в контейнер.Я использую -p host_port: container_port во всех возможных комбинациях, но это бесполезно.

К вашему сведению: без докера это работает нормально.(dotnet test.dll)

Можете ли вы указать точку, в которой мне нужно провести исследование, или вы можете предоставить точное решение?

версия докера

Client: Docker Engine - Community
 Version:           18.09.0
 API version:       1.39
 Go version:        go1.10.4
 Git commit:        4d60db4
 Built:             Wed Nov  7 00:47:51 2018
 OS/Arch:           windows/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          18.09.0
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.4
  Git commit:       4d60db4
  Built:            Wed Nov  7 00:52:55 2018
  OS/Arch:          linux/amd64
  Experimental:     false

docker run -t service --port 8080: 80 --name myfirst_container

warn: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[35]
      No XML encryptor configured. Key {71f5b198-2cbb-45ba-a7fc-a36df9f8b985} may be persisted to storage in unencrypted form.

Hosting environment: Production
Content root path: /app
Now listening on: http://[::]:80
Application started. Press Ctrl+C to shut down.

DOCKERFILE

FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE 80

FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /src
COPY ["test/test.csproj", "test/"]
RUN dotnet restore "test/test.csproj"
COPY . .
WORKDIR "/src/test"
RUN dotnet build "test.csproj" -c Release -o /app

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

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "test.dll"]

1 Ответ

0 голосов
/ 21 ноября 2018

Это были две самые тяжелые ночи в моей жизни, но я нашел решение.

Проблема была вызвана Visual Studio, она генерирует неправильный файл Docker.

Исправленоdockerfile

FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /app

# copy csproj and restore as distinct layers
COPY *.sln .
COPY test/*.csproj ./test/
RUN dotnet restore

# copy everything else and build app
COPY test/. ./test/
WORKDIR /app/test
RUN dotnet publish -c Release -o out


FROM microsoft/dotnet:2.1-aspnetcore-runtime AS runtime
WORKDIR /app
COPY --from=build /app/test/out ./
ENTRYPOINT ["dotnet", "test.dll"]

Решение пришло отсюда:

https://hub.docker.com/r/microsoft/dotnet-samples/

https://github.com/dotnet/dotnet-docker/blob/master/samples/aspnetapp/Dockerfile

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...