docker和.NET Core 2.0的VSTS CI / CD – 复制失败

在遵循一些.NET Core 2.0 Visual Studio Team Services持续集成/持续交付示例的同时,我遇到了VSTS中的复制错误。

通过VS17添加docker支持在本地使用像这样的dockerfile。

FROM microsoft/aspnetcore:2.0 ARG source WORKDIR /app EXPOSE 80 COPY ${source:-obj/Docker/publish} . ENTRYPOINT ["dotnet", "myapp.dll"] 

通过MVC应用程序和WebAPI应用程序,它可以很好地与Docker合作。

当添加一个VSTS CI构build过程并运行它时,我保持与副本的错误。

构buildmyapp服务'myapp'未能构build: COPY失败:GetFileAttributesEx \?\ C:\ Windows \ TEMP \ docker-builder91 \ obj \ Docker \ publish:系统找不到指定的path。 C:\ Program Files \ Docker \ docker-compose.exe失败,返回代码:1

我find的解决方法是从这个博客。

请注意,他们在Linuxdocker机器上遇到错误

复制失败:stat / var / lib / docker / tmp / docker -builder613328056 / obj / Docker / publish:没有这样的文件或目录/ usr / bin / docker失败,返回码:1

解:

像这样做一个Dockerfile.ci

 FROM microsoft/aspnetcore-build:2.0 AS build-env 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 microsoft/aspnetcore:2.0 WORKDIR /app COPY --from=build-env /app/out . ENTRYPOINT ["dotnet", "SiliconValve.Vsts.DockerDemo.dll"] 

它还需要修改.dockerignore文件。

 bin/ obj/ !*.dll !obj/Docker/publish/* !obj/Docker/empty/ 

这使我可以继续CI过程,但是我认为这个问题更容易解决。