错误CTC1014 Docker命令失败,具有dotnet核心api的退出代码1

时间:2020-02-11 16:10:58

标签: c# visual-studio asp.net-core dockerfile

我正在尝试使用VS2019和docker构建最基本的Web Api应用程序。基本上,这只是VS提供的演示应用程序。我最终遇到以下错误:

严重性代码描述项目文件行抑制状态 错误CTC1014 Docker命令失败,退出代码为1。 hcsshim :: PrepareLayer-在Win32:Incorrec中失败失败

在我的dockerfile

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-nanoserver-1903 AS base
WORKDIR /app
EXPOSE 8080
EXPOSE 443

FROM mcr.microsoft.com/dotnet/core/sdk:3.1-nanoserver-1903 AS build
WORKDIR /src
COPY ["RegexTesterApi/RegexTesterApi.csproj", "RegexTesterApi/"]
RUN dotnet restore "RegexTesterApi/RegexTesterApi.csproj"
COPY . .
WORKDIR "/src/RegexTesterApi"
RUN dotnet build "RegexTesterApi.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "RegexTesterApi.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "RegexTesterApi.dll"]

好吧,这是自动生成的dockerfile。但这对我来说还不错(我也是Docker的新手)。

实际上是什么导致错误。

3 个答案:

答案 0 :(得分:1)

我在过去遇到了相同的错误(CTC1014)。我发现我的项目本应以“调试”模式运行,却以“发布”模式运行。因此,我建议将此作为解决方法

Here's how you change it in VS2019

当然,以发布模式运行应用程序应该不是问题。因此,我认为它一定与大多数版本构建配置所采用的某些优化有关,与Docker冲突。不过,不完全确定是哪一个。

干杯! o /

答案 1 :(得分:0)

我也遇到过这个问题,但使用 .net core 2.1。我不确定它为什么有效,但是,如果您可以使用此解决方案,请尝试以下操作:

  1. 重新启动 Docker 桌面(此解决方案在输出窗口中提供)
  2. 更改 docker 文件。

我换了这个

FROM mcr.microsoft.com/dotnet/runtime:2.1 AS base
WORKDIR /app

FROM mcr.microsoft.com/dotnet/sdk:2.1 AS build
WORKDIR /src

FROM mcr.microsoft.com/dotnet/core/runtime:2.1-alpine AS base
WORKDIR /app

FROM mcr.microsoft.com/dotnet/core/sdk:2.1-alpine AS build
WORKDIR /src

然后,即使将 docker 文件更改为 start 变体(包括在断点处停止),调试也开始正常工作。我的配置还有一个额外的区别: 我在 docker 文件中使用 Debug 参数并在解决方案配置中使用 Debug

RUN dotnet build "DebugLinux.csproj" -c Debug -o /app/build

答案 2 :(得分:0)

当您项目中的 dockerfile 与项目设置中的 Target Framework 不匹配时,可能会引发此错误。

只需删除您的 dockerfile 并创建一个新的,如果这是问题,这将解决问题。