You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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,构建选项为默认设置。

解决步骤

  1. 切换到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
    
  2. 添加调试端口映射
    在docker-compose.override.yml的catalog.api服务中添加调试端口映射,确保Rider能连接到容器内的调试器:

    catalog.api:
      # ... 原有配置
      ports:
        - "8000:80"
        - "5000:5000"  # .NET 7调试默认端口,可按需调整
      environment:
        # ... 原有环境变量
        - ASPNETCORE_URLS=http://+:80;http://+:5000
    
  3. 检查Rider调试配置细节

    • 打开运行/调试配置,确认目标服务为catalog.api
    • 切换到Build标签,勾选Build docker-compose services before run
    • 切换到Debug标签,确保Debug port与容器映射端口一致(默认5000)
  4. 临时禁用Docker Compose V2排查
    部分版本Rider与Compose V2存在兼容性问题,可暂时关闭Docker Desktop中的“Use Docker Compose V2”选项,改用V1尝试调试,确认是否为V2导致的问题。

  5. 清理重建镜像
    之前Release模式构建的镜像可能残留,执行以下命令清理后重新构建:

    docker-compose down --rmi all
    docker-compose build
    

内容的提问来源于stack exchange,提问作者Максим Белов

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 14:23:17