2017-10-11 122 views
0

我在Windows服务器2016(单个vm,On Premises)上运行用于数据处理的docker映像。我的图像存储在Azure容器注册表中。代码不会经常更改。获取安全更新我喜欢在microsoft/windowsservercore更新后重建和发布。在Docker集线器映像更新后触发VSTS生成

是否有最佳实践方法来做到这一点?

我想到了3种方式解决这个的:每24小时,拉微软/ windowsservercore,拉我的自定义图像,运行PowerShell来获取生成日期,然后比较

  1. 运行计划版本(或使用一些histroy ID)。如果需要重建,请构建新图像并标记构建。将发布配置为仅在此标记上运行。
  2. 运行作业以检查Docker镜像的更新时间,并使用REST请求触发构建。
  3. 在github上放置一个基本的Dockerfile。使用微软/ windows服务器核心的触发器设置自动生成,并将webhook配置为启动使用REST生成的WebService。

但我真的很喜欢非这些想法。有更好的选择吗?

回答

0

我选择选项三。因此,我成立了一个GitHub的repository有一行Dockerfile

FROM alpine 

我用了高山图像,而不是windowsservercore,因为自动生成当前确实不支持Windows图像。我在码头集线器中配置了一个自动构建版本,并将链接库添加到microsoft/windowsservercoreLinked Repositories to windowsservercore 然后我用HTTP请求触发器设置了一个MS Flow来启动Build。 Flow to start the build将流程URL添加到自动构建中的新webhook。

对我来说,这是许多移动部件必须配置和协同工作,但我知道没有更好的方法。

1

您可以直接使用Azure Container Registry webhooks,简单的工作流程:

  1. 生成Web API项目通过Queue a build Rest API
  2. 排队每个细节请求(网络挂接请求)构建创建Azure的容器注册网络挂接到调用Web API(step1)
+0

我想运行构建时更新microsoft/windowsservercore docker hub映像。但是acr webhook的文档说:“当某个注册表存储库**中的某个操作发生时,您使用webhooks触发事件。” – sschoof

+0

勾选这种方式[在Docker Hub上配置自动构建](https://docs.docker.com/docker-hub/builds/)。 (不清楚你的第三种方式,也许他们是相似的) –

+0

是的,这是我的第三个想法。 – sschoof