基本上,我有一个安装了MSBuild工具和Vsts代理的docker容器。由于Visual Studio安装程序的原因,构建Docker容器需要花费大量时间。 (在本地计算机上为45分钟)
在Azure DevOps中,我创建了一个管道,使用该映像来启动,生成和部署我们的应用程序。完成构建后,应停止容器直到下一个请求。
我认为使用ACI将使我当前的本地构建服务器过时,因为我发现拥有一个完整的Windows服务器在其上运行docker以及容器也运行一个完整的Windows服务器有点愚蠢。 我错过了一些东西,或者运行了msbuild,并且物理服务器上的代理无法实现整个docker解决方案的目的。
另一方面,删除此物理服务器并将其替换为ACI应该可以解决问题。 Azure Devops可以使用Azure Cli启动和停止此容器。唯一的问题是容器实例是无状态的,这在每次启动实例时都需要半小时才能完成,这会带来讨厌的副作用,即每次启动映像时都会拉取映像。出于成本考虑,让实例保持运行是不可行的。 如果仅在每次重新启动时缓存并使用提取的图像,这将是最终的解决方案,但不幸的是,不是。
我是否在初步调查中错过了某些内容,或者我做了一些错误的假设?
答案 0 :(得分:0)
否,您可以在Azure Devops中进行缓存,它已经缓存了一些基本映像,您可以查询this API来查找它们。
Azure容器实例使用缓存机制来提高速度 基于常见Windows基本映像构建的映像的容器启动时间, 包括nanoserver:1809,servercore:ltsc2019和servercore:1809。 诸如ubuntu:1604和alpine:3.6之类的常用Linux映像也 已缓存。
阅读:
https://docs.microsoft.com/bs-latn-ba/azure/container-instances/container-instances-faq#what-windows-base-os-images-are-supported
https://docs.microsoft.com/bs-latn-ba/azure/container-instances/container-instances-troubleshooting?view=azurermps-6.13.0#cached-images