一尘不染

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

docker

在遵循几个.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-compose完美结合。

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

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


阅读 269

收藏
2020-06-17

共1个答案

一尘不染

我发现的解决方法来自此博客。

请注意,他们在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流程,但是我认为可以更轻松地解决此问题。

2020-06-17