【问题标题】:Failed attaching debugger to local docker linux container from visual studio 2019无法从 Visual Studio 2019 将调试器附加到本地 docker linux 容器
【发布时间】:2020-06-12 10:09:17
【问题描述】:

所以我在本地机器上使用 docker-compose 在 docker 容器上运行了简单的 hello world .net 核心应用程序设置

问题是当我尝试使用调试从 vs2019 附加调试器时 -> 附加到进程 -> ConnectionType Docker(Linux 容器) -> 选择进程并点击附加。

我收到错误声明

Failed to launch debug adapter 'coreclr'.
Failed to copy files.


Initialization log:
Determining user folder on remote system...
Checking for existing installation of debugging tools...
Downloading debugger launcher...
Creating debugger installation folder: /root/.vs-debugger
Copying debugger launcher to /root/.vs-debugger/GetVsDbg.sh
Failed: Failed to copy files.
The program '[360] bash' has exited with code -1 (0xffffffff).

似乎出于某种原因,Visual Studio 试图将调试器复制到正在运行的容器中,但失败了

这是简单的 dockerfile 和 docker-compose 脚本

Dockerfile

FROM microsoft/aspnetcore-build:1.1.2

RUN apt-get update && apt-get install -y unzip

RUN curl -sSL \
   https://aka.ms/getvsdbgsh | bash /dev/stdin -v vs2019 -l /root/.vs-debugger

COPY node_modules/wait-for-it.sh/bin/wait-for-it /tools/wait-for-it.sh

RUN chmod +x /tools/wait-for-it.sh

ENV DBHOST=dev_mysql WAITHOST=dev_mysql WAITPORT=3306

ENV DOTNET_USE_POLLING_FILE_WATCHER=true 

EXPOSE 80/tcp

VOLUME /app

WORKDIR /app

ENTRYPOINT dotnet restore \
    && /tools/wait-for-it.sh $WAITHOST:$WAITPORT --timeout=0 \
       && dotnet watch run --environment=Development

docker-compose.yml

version: "3"

volumes:
  productdata:

networks:
  backend:

services:
  mysql:
    image: "mysql:8.0.0"
    volumes:
      - productdata:/var/lib/mysql
    networks:
      - backend
    environment:
      - MYSQL_ROOT_PASSWORD=mysecret
      - bind-address=0.0.0.0

  mvc:
    build:
      context: .
      dockerfile: Dockerfile
    volumes:
      - .:/app
      - /app/obj
      - /app/bin
      - ~/.nuget:/root/.nuget
      - /root/.nuget/packages/.tools
    ports:
      - 3000:80
    networks:
      - backend
    environment:
      - DBHOST=mysql
      - WAITHOST=mysql
    depends_on:
      - mysql

注意: - 我已经在 docker 主机上勾选了 Shared Drive

有什么线索吗?

【问题讨论】:

    标签: docker asp.net-core docker-compose


    【解决方案1】:

    我有一个解决办法-

    请注意,每个正在运行的容器只能执行此操作一次,如果使用新代码重新部署容器,则必须再次执行此操作。

    1. 在 Visual Studio 中查找容器
    2. 右键单击容器并选择“打开终端”
    3. 在已打开的终端中,依次运行以下命令:
    4. apt-get 更新
    5. apt-get install procps -y
    6. apt-get install wget -y
    7. mkdir /root/.vs-debugger
    8. curl -sSL https://aka.ms/getvsdbgsh -o ‘/root/.vs-debugger/GetVsDbg.sh’
    9. bash /root/.vs-debugger/GetVsDbg.sh -v latest -l /vsdbg
    10. 将 VS 中的构建模式更改为 Release
    11. 附加调试器

    您还可以使用以下命令一次性运行所有命令 4-9:

    apt-get update && apt-get install procps -y && apt-get install wget -y && mkdir /root/.vs-debugger && curl -sSL https://aka.ms/getvsdbgsh -o '/root/.vs-debugger/ GetVsDbg.sh' && bash /root/.vs-debugger/GetVsDbg.sh -v latest -l /vsdbg

    【讨论】:

      【解决方案2】:

      似乎出于某种原因,Visual Studio 无法访问 docker-users 组,尽管我已经将我当前的用户帐户添加到该组

      解决方法是创建新的 windows 用户并将其添加到 docker-users 组。 它就像一个魅力

      【讨论】:

      • 你是怎么做到的?
      猜你喜欢
      • 2019-03-27
      • 1970-01-01
      • 2021-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-06
      • 2014-08-27
      • 2016-03-26
      相关资源
      最近更新 更多