使用docker连续部署

我实际上正在使用一个堆栈,允许我在集成/部署系统中进行一些自动化操作。

其实我工作如下:

  • 我推我的代码到一个github存储库
  • jenkins嗅回购,并build立软件,发射unit testing
  • 如果unit testing(或其他types的testing,无论如何),它通知Rundeck部署到我的服务器(3在我的情况下)通过连接到SSH并告诉:“嘿家伙,你必须从github拉,新的软版本“,然后它重新启动有关的服务,我的软件现在是最新的

好的,告诉我,如果我错了,但似乎是一个很好的解决scheme吗?

然后,我想集装箱我的应用程序,现在,我有一些头痛。

首先解决scheme

事实上,我在想如下的东西:

  • 推送到github
  • jenkinstesting,build立docker形象
  • Rundeck推送到docker集线器,并告诉3台服务器从集线器中取出新镜像,并通过SSH运行

问题:它会运行在另一个容器(多个docker运行相同的图像,但具有不同的版本:()

第二种scheme

第二个解决scheme是:

  • 推送到github
  • jenkinstesting并告诉rundecktesting成功,而不创build“真正的构build”(只有一个testing)
  • Rundeck通过ssh连接到正在运行的容器 ,并要求提取修改,然后重新启动docker容器

问题:我被迫在我的所有容器中使用ssh

我不知道如何绕过我的问题,什么是最好的解决scheme…

谢谢你的帮助

我没有看到解决scheme1的任何问题。

1.用jenkinsbuild立生产版本

把它(通过jenkins)推到你的私人dockerregistry

3.Tell Rundeck / Ansible / Chef / Puppet要求3台服务器拉取最新的镜像并重启容器。

然而,强烈build议采取一些策略,如果发生某些事情,则会考虑蓝绿原则和回滚。