使用 Rider IDE 附加到 docker-compose 中的容器

Posted

技术标签:

【中文标题】使用 Rider IDE 附加到 docker-compose 中的容器【英文标题】:Attach to container in docker-compose with Rider IDE 【发布时间】:2021-06-08 08:35:36 【问题描述】:

我正在运行 2021 版的 Rider,并且有一个相当简单的 docker-compose:

    version: "3"
    networks:
            internal:
                    external: false
    volumes: 
            test-data:
    services:
            aml:
                    hostname: aml
                    build: 
                            dockerfile: ./Docker/IntegrationTests/Dockerfile
                            context: ../
                            args:
                                    - GITHUB_USER=$GITHUB_USER
                                    - GITHUB_TOKEN=$GITHUB_TOKEN
                    environment:
                            - TZ=Europe/London
                    networks:
                            - internal
                    depends_on: 
                            - tn-mock
                            - db
                    volumes:
                            - test-data:/test-results
            tn-mock:
                    hostname: tn_mock
                    build:        
                            dockerfile: ./Docker/Mockoon/Dockerfile
                            context: ../
                    environment:
                            - TZ=Europe/London
                    restart: unless-stopped
                    networks:
                            - internal
            db:
                    hostname: db
                    build:                        
                            dockerfile: ./Dockerfile
                            context: ./ToteDB
                    environment:
                            - TZ=Europe/London
                    restart: unless-stopped
                    networks:
                            - internal

aml 容器是一个 dotnet 5、C# 9 项目,带有以下 Dockerfile(我已经删除了一些机密信息):

    ARG NET_IMAGE=5.0    
    FROM mcr.microsoft.com/dotnet/sdk:$NET_IMAGE AS build
    RUN apt-get update && apt-get install -y libc-dev
    COPY . .
    ARG GITHUB_USER
    ARG GITHUB_TOKEN
    ARG DB_STRING
    ARG TN_ENDPOINT
    ENV ConnectionStrings__DefaultConnection=$DB_STRING
    ENV ToteAmlClientSettings__BaseEndPoint=$TN_ENDPOINT
    RUN dotnet nuget add source oursource.json -n github -u $GITHUB_USER -p $GITHUB_TOKEN --store-password-in-clear-text
    WORKDIR /project.integrationtests
    RUN dotnet restore 
    EXPOSE 3000
    VOLUME ["/test-results"]
    ENTRYPOINT dotnet test --test-adapter-path:. --logger:"junit;LogFileName=xunit/results.xml" --results-directory:/test-results

所以我想附加到 AML 容器以便调试它。 This article 表示应该可以。

但是,当我通过 Rider 调试按钮运行堆栈时,我收到错误 244。

在环境方面,我运行的是最新的 MacOS 和 dotnet 5.0.2。

有什么想法吗?

【问题讨论】:

【参考方案1】:

所以我可以看到两件事(我在猜测)。首先,我看不到您在任何地方进行构建(我知道测试会创建构建,但您无法控制该构建)。其次,您是否不需要具有调试符号等的构建才能设置断点? (这就是错误 244 的含义)

【讨论】:

以上是关于使用 Rider IDE 附加到 docker-compose 中的容器的主要内容,如果未能解决你的问题,请参考以下文章

从 Mac 上的 Rider 附加到 Azure Functions 的调试器

在 Rider IDE 中使用 .gitignore

在 Rider IDE 中设置 Android Xamarin 解决方案未检测到框架

在 Rider IDE 中调试时重新加载 WPF XAML?

Unity使用Rider作为IDE的体验

一款好的游戏开发IDE是什么样子?Rider使用体验和建议