在关注几个.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失败,返回码为:
答案 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容器到私有容器存储库的任务。