在关注几个 .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”失败
建造:复制失败:GetFileAttributesEx\?\C:\Windows\TEMP\docker-builder91\obj\Docker\publish:
系统找不到指定的路径。 C:\程序
Files\Docker\docker-compose.exe 失败,返回代码:1
我找到的解决方法是来自这个博客。
请注意,他们在 Linux docker 机器上遇到了错误
复制失败: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 过程,但我认为有更简单的方法可以解决该问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)