使用 Dockerfile 使用 Jetbrains Rider 调试 .NET Core 应用程序

Debugging .NET Core application with Jetbrains Rider using Dockerfile

我正在尝试 运行 使用 Dockerfile 调试配置中的 .NET Core WebApi 项目。我已经使用 Rider 中的模板(带有 ValuesController 的模板)创建了 api 应用程序,创建了如下所示的 dockerfile。 运行 未经调试的应用程序在常规启动配置文件和 dockerfile 启动配置文件中都能正常工作。从常规启动配置文件调试工作正常,但是当我尝试 运行 使用 dockerfile 的调试配置时,我收到错误消息: /riderDebugger/runtime.sh: exec: line 40: /riderDebugger/linux-x64/mono/bin/mono-sgen: not found。我可以看到 Rider 在 运行 调试配置时添加了卷绑定 /riderDebugger/riderLogs,已经检查 /riderDebugger 的主机路径包含 runtime.sh 正在尝试 运行.

我也无法 运行 使用命令覆盖从下面的 dockerfile 创建的图像,例如使用命令 docker image build -t example-api-manual --no-cache . 创建图像并使用 运行 将其与 docker container run -it --rm example-api-manual sh 不会启动 sh,而只是 运行 使用默认命令启动图像,就像没有命令覆盖一样。因此,因此我什至无法进入容器并检查这些卷绑定有什么问题。

我正在使用 macOS Catalina 10.15.2 和 JetBrains Rider 2019.3.1。

Docker 文件:

FROM mcr.microsoft.com/dotnet/core/sdk:2.2-alpine AS build
WORKDIR /app

COPY *.csproj ./
RUN dotnet restore

COPY ./. ./
WORKDIR /app
RUN dotnet publish -c Release -o out

FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-alpine AS runtime
WORKDIR /app
COPY --from=build /app/out ./
ENTRYPOINT [ "dotnet", "ExampleApi.dll" ]

alpine 图像目前无法与内部骑手 docker 调试器一起使用。请使用 Debian 映像。 只需删除 -alpine 标签就可以了:-)

FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build
WORKDIR /app

COPY *.csproj ./
RUN dotnet restore

COPY ./. ./
WORKDIR /app
RUN dotnet publish -c Release -o out

FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS runtime
WORKDIR /app
COPY --from=build /app/out ./
ENTRYPOINT [ "dotnet", "ExampleApi.dll" ]

编辑:我使用的是禁用了 SIP(​​系统完整性保护)的 10.14.6 Mojave。请让我知道所提供的答案是否适合您。非常感谢!