VSTS CI/CD with docker and .NET Core 2.0 - Copy failed

匿名 (未验证) 提交于 2019-12-03 01:06:02

问题:

While following a couple .NET Core 2.0 Visual Studio Team Services Continuous Integration/Continuous Delivery examples I bumped into a copy error in VSTS.

Adding docker support via VS17 works great locally with a dockerfile like this.

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

With an MVC app and a WebAPI app it worked well with docker-compose locally.

When adding a VSTS CI build process and running it I kept hitting errors with the copy.

Building myapp Service 'myapp' failed to build: COPY failed: GetFileAttributesEx \?\C:\Windows\TEMP\docker-builder91\obj\Docker\publish: The system cannot find the path specified. C:\Program Files\Docker\docker-compose.exe failed with return code: 1

回答1:

The workaround that I've found is from this blog.

Note that they hit an error on a linux docker machine

COPY failed: stat /var/lib/docker/tmp/docker-builder613328056/obj/Docker/publish: no such file or directory /usr/bin/docker failed with return code: 1

Solution:

Make a Dockerfile.ci like this

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"] 

It also requires modifying the .dockerignore file.

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

This allows me to continue the CI process, however I assume there's an easier fix to the problem.



回答2:

I managed to build the service from within VSTS and copy them to the Docker image. I used .Net Core VSTS tasks to build and publish to "obj/Docker/Publish" folder and used "Docker-compose" tasks to build and publish docker container to private container repository.



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!