带有docker和.NET Core 2.0的VSTS CI / CD - 复制失败

时间:2017-12-04 00:53:26

标签: docker azure-devops dockerfile azure-pipelines .net-core-2.0

在关注几个.NET Core 2.0 Visual Studio团队服务持续集成/持续交付示例时,我遇到了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-compose。

添加VSTS CI构建过程并运行它时,我一直遇到副本错误。

  

构建myapp服务' myapp'失败   build: COPY失败:GetFileAttributesEx   \?\ C:\ Windows \ TEMP \ docker-builder91 \ obj \ Docker \ publish:The   系统找不到指定的路径。 C:\ PROGRAM   Files \ Docker \ docker-compose.exe失败,返回码为:

2 个答案:

答案 0 :(得分:4)

我找到的解决方法是from this blog.

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

  

COPY失败: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过程,但是我认为可以更容易地解决问题。

答案 1 :(得分:0)

我设法从VSTS中构建服务并将它们复制到Docker镜像。我使用.Net Core VSTS任务来构建和发布到" obj / Docker / Publish"文件夹和使用" Docker-compose"用于构建和发布docker容器到私有容器存储库的任务。