我正在尝试使用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的新手)。
实际上是什么导致错误。
答案 0 :(得分:1)
我在过去遇到了相同的错误(CTC1014)。我发现我的项目本应以“调试”模式运行,却以“发布”模式运行。因此,我建议将此作为解决方法。
Here's how you change it in VS2019
当然,以发布模式运行应用程序应该不是问题。因此,我认为它一定与大多数版本构建配置所采用的某些优化有关,与Docker冲突。不过,不完全确定是哪一个。
干杯! o /
答案 1 :(得分:0)
我也遇到过这个问题,但使用 .net core 2.1。我不确定它为什么有效,但是,如果您可以使用此解决方案,请尝试以下操作:
我换了这个
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 并创建一个新的,如果这是问题,这将解决问题。