在图像更新后让Jenkins“更新”正在运行的docker容器的最佳方法

时间:2016-02-15 15:31:55

标签: java jenkins docker

我们的组织对Docker和Jenkins来说相对较新。我们正在开发从(Java)源代码更新到运行应用程序的CI管道。

目前,Jenkins正在使用Cloudbees Docker构建和发布插件在成功构建后更新映像。它只是提取基础(JBoss)图像并使用刚刚构建的App的WAR文件(通过Maven)更新它。

我们正在使用“通过SSH发送命令”构建步骤将SSH连接到服务器(当前正在运行)的容器,使用指定的映像ID停止容器,然后重新拉动并随后运行容器。

然而,我知道必须有更好,更优雅的方式来做到这一点。令人惊讶的是,我无法找到有关如何操作的文档。任何意见,将不胜感激。请告诉我。

2 个答案:

答案 0 :(得分:1)

如果您只想使用Docker,那么您无法做更多事情。将Jenkins与Docker结合使用已经是一个很好的进步。也许你可以docker stop代替ssh shutdown,但这不会让事情变得更好。

OpenshiftFabric8之类的工具可以帮助您构建CI和CD工作流程。这应该有所帮助。但请注意,如果您仔细观察它们,您会看到其中有几个构建在Kubernetes之上。

如果您正在寻找可以使用的工作流程,请尝试使用Openshift。看看它是architecture overview。它有一个让你的生活更轻松的Jenkins plugin

如果你想在建立自己的工作流程的同时向前迈进一步,毫无疑问Kubernetes是要走的路。它只是投入了大量的设施来构建您的容器集群,而不会给您带来一些工作流程。请查看this overviewgetting started from CoreOS docs

答案 1 :(得分:0)

有一个所谓的守望台docker映像。 Github:https://github.com/containrrr/watchtower,泊坞中心:https://hub.docker.com/r/containrrr/watchtower

将其用作要更新的容器的辅助工具。守望台与您的应用程序同时运行,监视是否有推送到指定标签的情况,如果有推送,则更新您的应用程序。

但是,您放弃了对停机时间的控制。容器通常不会立即启动。