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

Mac*_*ski 3 core docker asp.net-core rider macos-catalina

我正在尝试使用 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。

Dockerfile:

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" ]
Run Code Online (Sandbox Code Playgroud)

小智 5

alpine 映像目前无法与内部 Rider 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" ]
Run Code Online (Sandbox Code Playgroud)

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