Отладка docker образа в коде VS: файл CS не найден: - PullRequest
0 голосов
/ 09 апреля 2020

Я пытаюсь отладить изображение docker, используя приведенное описание в этой статье .

Я создал Dockerfile так:

    FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base

RUN apt update && \
    apt install procps -y && \
    apt install unzip && \
    curl -sSL https://aka.ms/getvsdbgsh | /bin/sh /dev/stdin -v latest -l /vsdbg

WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR /src

COPY *.sln ./
COPY server/Business/NotificationModule.Business.csproj server/Business/
COPY server/Common/NotificationModule.Common.csproj server/Common/
COPY server/Data/NotificationModule.Data.csproj server/Data/
COPY server/DomainModel/NotificationModule.DomainModel.csproj server/DomainModel/
COPY server/Host/NotificationModule.Host.csproj server/Host/

RUN dotnet restore
COPY . .
WORKDIR "/src/server/Host/"
RUN dotnet build "NotificationModule.Host.csproj" -c Debug -o /app/build

FROM build AS publish
RUN dotnet publish "NotificationModule.Host.csproj" -c Debug -o /app/publish

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

и я добавил запись для отладки docker образов при запуске. json примерно так:

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

Кажется, что это работает, и я могу подключить отладчик к своему процессу, но проблема в том, что когда отладчик достигает точки останова, он не может найти никаких файлов CS и вместо этого показывает пустой файл CS.

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

ОБНОВЛЕНИЕ: Я заметил, что отладчик ищет мои cs-файлы в папке sr c, которых явно не существует ни в моем рабочем каталоге, ни в самом образе. Поэтому вопрос в том, почему он там смотрит.

1 Ответ

0 голосов
/ 09 апреля 2020

ОК, я понял. Это была моя ошибка, потому что я использовал тот же самый файл docker, который у нас есть для производства, для копирования файлов pdb в образ docker, и эти файлы pdb были созданы в контейнере docker в каталоге sr c, поэтому он там смотрел.

Я просто скопировал файлы из моего bin / debug в docker образ, и теперь он работает отлично (а позже я заметил, что это также упоминалось в статье).

так вот новый DockerFile:

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base

RUN apt update && \
    apt install procps -y && \
    apt install unzip && \
    curl -sSL https://aka.ms/getvsdbgsh | /bin/sh /dev/stdin -v latest -l /vsdbg

WORKDIR /app
EXPOSE 80
EXPOSE 443

COPY bin/debug .

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

и кстати, вы не должны добавлять bin в ваш .dockerignore файл

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