使用docker和chef的平滑解决方案

使用docker和chef的平滑解决方案,docker,chef-infra,google-compute-engine,Docker,Chef Infra,Google Compute Engine,场景:我们用竹子构建docker图像,并将这些图像推送到gcr.io chef client runs将始终执行gcloud docker拉取以拉取最新图像。但是,chef client不会重新启动将启用新映像的服务。我们在dev和prod中手动重新启动服务,因为在确定新映像正常工作之前,我们不希望chef停止服务 所以,如果我们对我们的新版本(这是我们正在进行的工作)有信心,有没有一种优雅的方式告诉chef client一个新的映像已经关闭,它需要重新启动服务 它几乎像一个“通知”的东西,几乎

场景:我们用竹子构建docker图像,并将这些图像推送到gcr.io

chef client runs将始终执行gcloud docker拉取以拉取最新图像。但是,chef client不会重新启动将启用新映像的服务。我们在dev和prod中手动重新启动服务,因为在确定新映像正常工作之前,我们不希望chef停止服务

所以,如果我们对我们的新版本(这是我们正在进行的工作)有信心,有没有一种优雅的方式告诉chef client一个新的映像已经关闭,它需要重新启动服务

它几乎像一个“通知”的东西,几乎像:

custom_docker_image_thingie "docker_image_name" do
  tag node.environment
  notifies :restart, "service[service_name]"
end

这有意义吗?

是的,看起来就是这样。您需要您的
自定义\u docker\u image\u thingie
资源来正确设置其
updated?
标志,这样才能正常工作。有一些帮助工具可以帮助您使用其他较小的资源构建资源(12.5自定义资源语法,
使用\u内联\u资源
通知\u块
),但是对于完全从头构建的资源,您需要自己编写代码