VS Code: ни один процесс не работает с ошибкой Id при подключении к процессу ASP.NET Core в контейнере Docker - PullRequest
0 голосов
/ 20 июня 2019

В настоящее время я использую ASP.NET Core непосредственно на моей рабочей станции Linux.Но я хочу напрямую разрабатывать с Docker, включая удаленную отладку.После разных статей кажется, что vsdbg требуется.Поэтому я попробовал следующее:

FROM mcr.microsoft.com/dotnet/core/sdk:2.2
RUN apt update && \
    apt install unzip && \
    curl -sSL https://aka.ms/getvsdbgsh | /bin/sh /dev/stdin -v latest -l /vsdbg

WORKDIR /app
COPY . .
RUN dotnet publish
WORKDIR /app/bin/Debug/netcoreapp2.2/publish/
ENTRYPOINT dotnet MyApp.dll

Контейнер Docker запущен, и я могу получить доступ к своему приложению ASP.NET Core в браузере.Код VS должен прикрепляться со следующим launch.json фрагментом:

    {
        "name": ".NET Core Attach",
        "type": "coreclr",
        "request": "attach",
        "processId": "${command:pickProcess}",
        "sourceFileMap": {
            "/app": "${workspaceRoot}"
        },
        "pipeTransport": {
            "pipeProgram": "docker",
            "pipeArgs": ["exec", "-i", "my-docker-container-name"],
            "debuggerPath": "/vsdbg/vsdbg",
            "pipeCwd": "${workspaceRoot}",
            "quoteArgs": false
        }
    }

После запуска этой записи отладочного вложения отображается список выбора с идентификаторами процессов.Первый содержит dotnet MyApp.dll, так что это должен быть мой процесс докера.Но после выбора VS Code показывает всплывающее окно, в котором в настоящее время не выполняется ни один процесс с выбранным идентификатором.

Идентификатор процесса верен.Я попытался запустить kill <pid>, и мой процесс dotnet в контейнере Docker завершился.

Так почему VS Code ломается из-за ошибки, что процесс Docker не запущен?

Системная информация:

  • Ubuntu 19.04
  • Docker 19.03.0-rc3
  • VS Код 1.35.1

Редактировать

Кажется, что-то связано с quoteArgs.Когда для этого параметра установлено значение false, возникает другая ошибка:

Ошибка выполнения OCI во время выполнения: ошибка exec: container_linux.go: 345: запуск процесса контейнера вызвал "exec: \" / vsdbg / vsdbg --interpreter= vscode \ ": stat / vsdbg / vsdbg --interpreter = vscode: нет такого файла или каталога": неизвестно

Без кавычек он пытается выполнить "/usr/bin/docker" exec -i <my-docker-container-name> /vsdbg/vsdbg --interpreter=vscode.Я выполнил это вручную, и он запускает vsdbg и держит терминал открытым.Так что quoteArgs: false кажется правильным для Докера.Хотя я не понимаю, почему это привело к странному отсутствию процесса с ошибкой pid в VS Code.

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