Rider IDE中Docker Compose调试失效问题求助
Rider调试Docker Compose编排的ASP.NET服务断点无效问题
我使用Rider 2023.1.1开发ASP.NET多服务应用,每个服务运行在独立Docker容器中,通过Docker Compose编排启动。设置断点后点击调试按钮,程序不会在断点处停止,调试标签页也未激活,但在Visual Studio中调试可正常运行。
环境信息
- Rider 2023.1.1
- Docker Desktop 4.19.0
- 已启用“Expose daemon on tcp://localhost:2375 without TLS”选项
- 已启用“Use Docker Compose V2”选项
相关配置文件
Dockerfile
FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS base WORKDIR /app EXPOSE 80 FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build WORKDIR /src COPY ["Services/Catalog/Catalog.API/Catalog.API.csproj", "Services/Catalog/Catalog.API/"] RUN dotnet restore "Services/Catalog/Catalog.API/Catalog.API.csproj" COPY . . WORKDIR "/src/Services/Catalog/Catalog.API" RUN dotnet build "Catalog.API.csproj" -c Release -o /app/build FROM build AS publish RUN dotnet publish "Catalog.API.csproj" -c Release -o /app/publish /p:UseAppHost=false FROM base AS final WORKDIR /app COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "Catalog.API.dll"]
docker-compose.yml
version: '3.4' services: catalog.db: image: mongo catalog.api: image: ${DOCKER_REGISTRY-}catalog.api build: context: . dockerfile: Services/Catalog/Catalog.API/Dockerfile volumes: mongo_data:
docker-compose.override.yml
version: '3.4' services: catalog.db: container_name: catalog.db restart: always ports: - "27017:27017" volumes: - mongo_data:/data/db catalog.api: container_name: catalog.api environment: - ASPNETCORE_ENVIRONMENT=Development - "DatabaseSettings:ConnectionString=mongodb://catalog.db:27017" depends_on: - catalog.db ports: - "8000:80"
Rider运行/调试配置
配置窗口选择了Docker Compose类型,目标服务为catalog.api,环境变量包含ASPNETCORE_ENVIRONMENT=Development,构建选项为默认设置。
解决步骤
切换到Debug构建配置
当前Dockerfile采用Release模式构建发布,Rider无法在Release编译的程序上命中断点。修改Dockerfile,将build和publish阶段的-c Release替换为-c Debug:RUN dotnet build "Catalog.API.csproj" -c Debug -o /app/build # ... RUN dotnet publish "Catalog.API.csproj" -c Debug -o /app/publish /p:UseAppHost=false添加调试端口映射
在docker-compose.override.yml的catalog.api服务中添加调试端口映射,确保Rider能连接到容器内的调试器:catalog.api: # ... 原有配置 ports: - "8000:80" - "5000:5000" # .NET 7调试默认端口,可按需调整 environment: # ... 原有环境变量 - ASPNETCORE_URLS=http://+:80;http://+:5000检查Rider调试配置细节
- 打开运行/调试配置,确认目标服务为
catalog.api - 切换到
Build标签,勾选Build docker-compose services before run - 切换到
Debug标签,确保Debug port与容器映射端口一致(默认5000)
- 打开运行/调试配置,确认目标服务为
临时禁用Docker Compose V2排查
部分版本Rider与Compose V2存在兼容性问题,可暂时关闭Docker Desktop中的“Use Docker Compose V2”选项,改用V1尝试调试,确认是否为V2导致的问题。清理重建镜像
之前Release模式构建的镜像可能残留,执行以下命令清理后重新构建:docker-compose down --rmi all docker-compose build
内容的提问来源于stack exchange,提问作者Максим Белов
相关产品推荐
相关产品推荐

