带有 docker 和 .NET Core 2.0 的 VSTS CI/CD - 复制失败
VSTS CI/CD with docker and .NET Core 2.0 - Copy failed
在遵循几个 .NET Core 2.0 Visual Studio 团队服务连续 Integration/Continuous 交付示例时,我在 VSTS 中遇到了复制错误。
通过 VS17 添加 docker 支持在本地使用这样的 docker 文件效果很好。
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 构建过程和 运行 时,我一直在复制时遇到错误。
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
我找到的解决方法是 from this blog.
请注意,他们在 linux docker 机器上遇到错误
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
解决方案:
像这样制作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"]
还需要修改.docker忽略文件。
bin/
obj/
!*.dll
!obj/Docker/publish/*
!obj/Docker/empty/
这让我可以继续 CI 过程,但我认为有更容易解决问题的方法。
我设法从 VSTS 中构建服务并将它们复制到 Docker 图像。我使用 .Net Core VSTS 任务构建并发布到 "obj/Docker/Publish" 文件夹,并使用 "Docker-compose" 任务构建并发布 docker 容器到私有容器存储库。
在遵循几个 .NET Core 2.0 Visual Studio 团队服务连续 Integration/Continuous 交付示例时,我在 VSTS 中遇到了复制错误。
通过 VS17 添加 docker 支持在本地使用这样的 docker 文件效果很好。
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 构建过程和 运行 时,我一直在复制时遇到错误。
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
我找到的解决方法是 from this blog.
请注意,他们在 linux docker 机器上遇到错误
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
解决方案:
像这样制作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"]
还需要修改.docker忽略文件。
bin/
obj/
!*.dll
!obj/Docker/publish/*
!obj/Docker/empty/
这让我可以继续 CI 过程,但我认为有更容易解决问题的方法。
我设法从 VSTS 中构建服务并将它们复制到 Docker 图像。我使用 .Net Core VSTS 任务构建并发布到 "obj/Docker/Publish" 文件夹,并使用 "Docker-compose" 任务构建并发布 docker 容器到私有容器存储库。