在遵循几个.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
我发现的解决方法来自此博客。
请注意,他们在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流程,但是我认为可以更轻松地解决此问题。