在 VS2019 上调试 docker-compose 时出错

Posted

技术标签:

【中文标题】在 VS2019 上调试 docker-compose 时出错【英文标题】:Error on Debugging docker-compose on VS2019 【发布时间】:2020-06-16 12:16:38 【问题描述】:

我有以下 docker 文件和 docker-compose,它通过 CLI 构建和创建容器映像没有任何问题,但是当我尝试通过 VS2019 构建它以进行调试时,它给出了一个错误,我试图重建项目检查哪里出了问题,但我无法弄清楚。我希望有人指出我正确的故障排除方向:-

Docker 文件:

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

# Copy necessary files and restore as distinct layer
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
COPY --from=build-env /app/out .

# Expose ports
EXPOSE 5000/tcp
ENV ASPNETCORE_URLS http://*:5000
HEALTHCHECK --interval=30s --timeout=3s --retries=1 CMD curl --silent --fail http://localhost:5000/hc || exit 1

# Start
ENTRYPOINT ["dotnet", "VehicleManagementAPI.dll"]

Docker 编写文件:

services:
  vehiclemanagementapi:
    image: urgen/vehiclemanagementapi:1.0
    build: src/VehiclemanagementAPI
    depends_on:
      - rabbitmq
      - sqlserver
    ports:
      - "5000"
    environment:
      - ASPNETCORE_ENVIRONMENT=Production

这不是一个特定的项目在构建/编译 docker-compose 文件时出现问题,而是所有项目都会发生这种情况。正如我所说,它通过 CLI 可以正常工作,没有任何问题,但是我想在 VS2019 中调试的一个特定项目存在问题。

所有项目在没有 dockerize 的情况下都可以正常构建/工作,这意味着我的项目还可以,但问题在于 docker-compose 或 docker 文件。

错误:

Severity    Code    Description Project File    Line    Suppression State
Error   CTC1000 (Line: 45, Col: 12, Idx: 954) - (Line: 45, Col: 36, Idx: 978): Exception during deserialization docker-compose  C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Sdks\Microsoft.Docker.Sdk\build\Microsoft.VisualStudio.Docker.Compose.targets    304

【问题讨论】:

【参考方案1】:

我已经通过在 docker-compose 文件中更改以下行来解决问题,但是我很困惑为什么 VS 2019 无法构建在 CLI 模式下可以正常工作的项目,因此我的理解是它是否有问题docker-compose 文件结构,它最初不会在 CLI 模式下构建:-

build: src/VehicleManagementAPI  to  build: .

即使错误并没有说明问题,错误似乎对故障排除毫无意义/无用。

【讨论】:

以上是关于在 VS2019 上调试 docker-compose 时出错的主要内容,如果未能解决你的问题,请参考以下文章

vs2019怎么输出结果

VS2019 - 使用 Cmake 项目在 Linux 上进行 Sudo 远程调试

VS2019调试Unity3D

无需Windbg | 使用VS 2019调试.NET程序的Crash异常

在 Windows 10 上使用 VS Code 在 iphone 上调试颤振

VS2019,调试的时候控制台无法显示输出,求教各位大佬这是怎么回事?