在生产部署中将容器链接在一起

时间:2014-07-02 14:18:26

标签: ruby-on-rails deployment docker

我想将我当前的部署迁移到docker,它依靠mongodb服务,redis服务,pg服务器和rails应用程序,我已经为每个创建了一个docker容器,但我对它的启动有疑问并链接他们。正在开发中我使用无花果,但我认为它不适合用于生产。为了将我的部署升级到生产级别,我应该使用什么机制来自动启动容器并将其链接在一起?我的部署使用已运行Ubuntu的单个docker主机,因此我无法使用CoreOS。

2 个答案:

答案 0 :(得分:5)

生产中的Linknig容器是一件棘手的事情。它将硬连接依赖容器的IP地址,因此如果您需要重新启动容器或启动替换(例如升级mongodb的版本),您的rails应用程序将无法使用新容器及其新IP地址开箱即用

This other answer explains一些可用的链接替代方案。

关于启动容器,您可以使用任何部署工具来运行所需的docker命令(Capistrano可以轻松地执行此操作)。之后,docker将在重新启动后重新启动运行容器。

如果容器死了,您可能需要一个观察程序进程来重新启动容器,就像使用普通的rails应用程序一样。

像Tutum和Dockerize.it这样的服务可以使这更简单。据我所知,Tutum不会部署到您的服务器。 Dockerize.it会,但非常粗糙(免责声明:我是团队成员的一员)。

答案 1 :(得分:2)

您可以使用fig2coreosfig配置转换为CoreOS格式的systemd配置文件。 Google App Engine supports CoreOS,或者您可以在AWS或您选择的云提供商上运行CoreOS。 fig2coreos还支持在Vagrant中部署到CoreOS以进行本地开发。

CenturyLink(fig2coreos作者)有一个示例博文here

  

此博客文章将向您展示如何弥合建筑之间的差距   使用Fig并部署这些应用程序的复杂多容器应用程序   应用程序到生产CoreOS系统。

编辑:如果您受限于现有主机操作系统,则可以使用QEMU(“通用和开源机器模拟器和虚拟器”)来托管CoreOS实例。说明为available from the CoreOS team