Отладка Docker -Создание в VS2019 завершается с ошибкой. Net Основные ошибки SDK - PullRequest
0 голосов
/ 06 января 2020

Итак, я хотел узнать и попробовать Docker -Создать в моем проекте. Проект состоит из 6 ASP. Net основных автономных служб, все из которых оснащены автоматически сгенерированным докер-файлом.

Все проекты работают на. Net Core 3.1, и их докер-файлы также отражают это.

Пример dockerfile:

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY .... (Some copies here I did cut out)
RUN dotnet restore "Services/MooMed.Stateful.SessionService/MooMed.Stateful.SessionService.csproj"
COPY . .
WORKDIR "/src/Services/MooMed.Stateful.SessionService"
RUN dotnet build "MooMed.Stateful.SessionService.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "MooMed.Stateful.SessionService.csproj" -c Release -o /app/publish

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

VS затем генерирует следующий docker -compose.yml:

  moomed.stateful.sessionservice:
    image: ${DOCKER_REGISTRY-}moomedstatefulsessionservice
    build:
      context: .
      dockerfile: Services/MooMed.Stateful.SessionService/Dockerfile

с соответствующим docker -compose.override .yml:

moomed.stateful.sessionservice:
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
      - ASPNETCORE_URLS=https://+:443;http://+:80
    ports:
      - "80"
      - "443"
    volumes:
      - ${APPDATA}/Microsoft/UserSecrets:/root/.microsoft/usersecrets:ro
      - ${APPDATA}/ASP.NET/Https:/root/.aspnet/https:ro

Это журнал ошибок, который я получаю при попытке отладки docker -compose:

-------------------------------------------------------------------
You may only use the Microsoft .NET Core Debugger (vsdbg) with
Visual Studio Code, Visual Studio or Visual Studio for Mac software
to help you develop and test your applications.
-------------------------------------------------------------------
-------------------------------------------------------------------
You may only use the Microsoft .NET Core Debugger (vsdbg) with
Visual Studio Code, Visual Studio or Visual Studio for Mac software
to help you develop and test your applications.
-------------------------------------------------------------------
-------------------------------------------------------------------
You may only use the Microsoft .NET Core Debugger (vsdbg) with
Visual Studio Code, Visual Studio or Visual Studio for Mac software
to help you develop and test your applications.
-------------------------------------------------------------------
-------------------------------------------------------------------
You may only use the Microsoft .NET Core Debugger (vsdbg) with
Visual Studio Code, Visual Studio or Visual Studio for Mac software
to help you develop and test your applications.
-------------------------------------------------------------------
-------------------------------------------------------------------
You may only use the Microsoft .NET Core Debugger (vsdbg) with
Visual Studio Code, Visual Studio or Visual Studio for Mac software
to help you develop and test your applications.
-------------------------------------------------------------------
-------------------------------------------------------------------
You may only use the Microsoft .NET Core Debugger (vsdbg) with
Visual Studio Code, Visual Studio or Visual Studio for Mac software
to help you develop and test your applications.
-------------------------------------------------------------------
  It was not possible to find any installed .NET Core SDKs
  Did you mean to run .NET Core SDK commands? Install a .NET Core SDK from:
      https://aka.ms/dotnet-download
  It was not possible to find any installed .NET Core SDKs
  Did you mean to run .NET Core SDK commands? Install a .NET Core SDK from:
      https://aka.ms/dotnet-download
  It was not possible to find any installed .NET Core SDKs
  Did you mean to run .NET Core SDK commands? Install a .NET Core SDK from:
      https://aka.ms/dotnet-download
  It was not possible to find any installed .NET Core SDKs
  Did you mean to run .NET Core SDK commands? Install a .NET Core SDK from:
      https://aka.ms/dotnet-download
  It was not possible to find any installed .NET Core SDKs
  Did you mean to run .NET Core SDK commands? Install a .NET Core SDK from:
      https://aka.ms/dotnet-download
  It was not possible to find any installed .NET Core SDKs
  Did you mean to run .NET Core SDK commands? Install a .NET Core SDK from:
      https://aka.ms/dotnet-download
The target process exited without raising a CoreCLR started event. Ensure that the target process is configured to use .NET Core. This may be expected if the target process did not run on .NET Core.
The program 'dotnet' has exited with code 145 (0x91).
The target process exited without raising a CoreCLR started event. Ensure that the target process is configured to use .NET Core. This may be expected if the target process did not run on .NET Core.
The program 'dotnet' has exited with code 145 (0x91).
The target process exited without raising a CoreCLR started event. Ensure that the target process is configured to use .NET Core. This may be expected if the target process did not run on .NET Core.
The program 'dotnet' has exited with code 145 (0x91).
The target process exited without raising a CoreCLR started event. Ensure that the target process is configured to use .NET Core. This may be expected if the target process did not run on .NET Core.
The target process exited without raising a CoreCLR started event. Ensure that the target process is configured to use .NET Core. This may be expected if the target process did not run on .NET Core.
The target process exited without raising a CoreCLR started event. Ensure that the target process is configured to use .NET Core. This may be expected if the target process did not run on .NET Core.
The program 'dotnet' has exited with code 145 (0x91).
The program 'dotnet' has exited with code 145 (0x91).
The program 'dotnet' has exited with code 145 (0x91).

Обратите внимание, что docker -compose выполняет все 6 служб, и я только перечислил файлы для одного из них, чтобы спасти вас от стены текста.

Однако все команды do tnet терпят неудачу одинаково.

Следует отметить, что при запуске сервисов в Docker из VS по отдельности не возникает никаких проблем, он прекрасно работает, поэтому я предполагаю, что файлы Docker не обязательно ошибаются. Как бы я ни читал о разделе сборки в docker -compose, он также должен явно go о работе с данными Dockerfiles, точно так же, как когда я делаю это сам.

Итак, что может быть, что-то идет не так?

РЕДАКТИРОВАТЬ: Еще немного информации ... Я также создал fre sh default Asp. Net Базовое приложение тем временем, запустил его через docker -compose с dockerfiles и compose yaml, в основном равным этому, кроме ссылок, и проблем там нет.

EDIT2: Также попытался docker-compose up вручную, теперь это работает отлично. Может ли это быть связано с vsdbg, что делает функция запуска отладки в VS? Я имею в виду, что понятия не имею, как Visual Studio делает это, но, возможно, VS преобразует yaml, чтобы включить загрузку vsdbg, аргументы записи затем передаются отладчику, который запускает приложение, и это может привести к сбою, поскольку контейнер не есть необходимые команды. Нечто подобное возможно. Тем не менее, если это будет так, то это также будет невозможно при обычной отладке одного сервиса без docker -compose.

1 Ответ

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

Да, старая добрая проблема со специальными символами.

Виновным было просто наличие / C # / в моей структуре папок. Переименовал его в / C -Sharp / и теперь он работает.

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