【问题标题】:ps not fount when attaching .Net Core WebApi to Docker container将 .Net Core Web Api 附加到 Docker 容器时找不到 ps
【发布时间】:2020-11-04 09:05:54
【问题描述】:

我正在尝试使用 Docker 调试我的 .Net Core webApi 项目。但是,我正在努力让它发挥作用。

我正在关注link,使用 VS Code 将我的 .Net Core 应用程序附加到 Docker 上。

这是我的 Dockerfile

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build-env

#install debugger for NET Core
RUN apt update && \
    apt install -y procps && \
    curl -sSL https://aka.ms/getvsdbgsh | /bin/sh /dev/stdin -v latest -l /vsdbg

WORKDIR /app

# Copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore

# Copy everything else and build
COPY . ./
RUN dotnet publish -c Release -o out

# Build runtime image
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "BooksApi.dll"]

然后,我添加了 launch.json 以附加 Docker 容器进程:

"configurations": [
        {
            "name": ".NET Core Attach",
            "type": "coreclr",
            "request": "attach",
            "processId": "${command:pickRemoteProcess}",
            "pipeTransport": {
                "pipeProgram": "docker",
                "pipeArgs": ["exec", "-i", "forecastapp"],
                "debuggerPath": "/vsdbg/vsdbg",
                "pipeCwd": "${workspaceRoot}",
                "quoteArgs": false
            },
            "sourceFileMap": {
                "/app": "${workspaceRoot}"
            }
        }
]

这两个文件乍一看似乎很好。因此,在 Docker 上构建和运行它时一切正常。

Docker 构建命令:

docker build -t myweatherforecastapp .

Docker 运行命令

docker run -it -p 8080:80 --name forecastapp myweatherforecastapp

到目前为止,一切正常。我可以到达终点。

所以,docker 容器正在运行。现在我想使用 Visual Studio Code 附加它。当我点击调试选项上的绿色箭头时:

我收到此错误:

当谷歌搜索错误时,我看到我们需要使用 apt install (link) 安装 procps。这已经包含在我的 Dockerfile 中:

 apt install -y procps 

我有点想不出什么可能是错的,或者我是否遗漏了什么。你能帮忙吗?

提前致谢。

【问题讨论】:

    标签: c# docker asp.net-core .net-core dockerfile


    【解决方案1】:

    你在基础镜像中安装了包,而它应该安装在你将要使用ps的最终镜像中。

    FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
    RUN apt update && \
        apt install -y procps
    WORKDIR /app
    COPY --from=build-env /app/out .
    ENTRYPOINT ["dotnet", "BooksApi.dll"]
    

    构建和测试

    docker build -t myapp .
    docker run -it --rm --entrypoint bash myapp
    ps
    

    【讨论】:

    • 感谢您的回答。我做了修改,它奏效了。我可以将容器附加到我的 VS Code。我现在面临的唯一问题是,尽管我设置了一个断点,但它并没有就此停止。它说没有加载任何符号。我想这是我需要解决的另一个问题。
    猜你喜欢
    • 1970-01-01
    • 2021-12-03
    • 2019-04-27
    • 2021-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多