与多个站点的docker的开发和生产

目前我有3个linode服务器:

1:caching服务器(Ubuntu,varnish)

2:应用服务器(Ubuntu,nginx,rabbitmq-server,python,php5-fpm,memcached)

3:DB服务器(Ubuntu,postgresql + pg_bouncer)

在我的应用程序服务器上,我有多个网站(topdomains)。 每个站点都在virtualenvwrapper创build的virtualenviroment内。 有些网站很大,stream量很大,有些网站很小,stream量很小。

一个典型的网站包括python(django),芹菜(节拍,花)和gunicorn。

我目前的开发模式现在正在应用程序服务器上的临时环境中工作,并对git进行更改。 然后将环境更改为生产环境,并执行git pull ,然后执行./manage.py migrate并重新启动进程,执行sudo supervisorctl restart sitename: ,但这需要时间! 必须有一个更简单的方法!

因此,似乎docker可以帮助简化一切,但我不能决定如何pipe理每个站点内的所有站点和容器的最佳方法。

我看了http://panamax.io和https://github.com/progrium/dokku ,但不知道其中一个是否符合我的需求。

理想情况下,我将在本地机器上运行每个站点的开发版本(模拟caching服务器,应用服务器和数据库服务器),在那里进行代码更改并testing它们。 当我看到所做的更改时,我会执行一个命令,完成所有繁重的工作,并将更改发送到linode服务器(我认为主要是应用程序服务器),执行所有的迁移并重新启动服务器上的项目。

任何人都可以指出我正确的方向如何实现这一目标?

我面临同样的问题。 我不认为这是最好的答案,并且有兴趣看看别人提出了什么。

Docker上似乎还没有任何真正的交钥匙解决scheme。

也是令人沮丧的是,大多数的“Django + Docker”教程只关注单个Django站点,所以他们将Web服务器和一切都放在同一个Docker容器中。 我想如果你有一个服务器上的多个站点,你希望他们共享一个Web服务器,但是这很快就变得比教程中提供的要复杂得多,这些都不再帮忙。

大概我想到的是这样的:

  • 使用图来pipe理容器和复杂的Dockerconfiguration,这将是繁琐的input命令行选项
  • 网站是Django,在uWSGI + Nginx(没有理由,你不能有其他人)
  • 我有一个Git回购每个网站,再加上一个“服务器”
  • 为db,nginx和每个站点分开容器
  • 每个站点容器都有它自己的uWSGI实例…我做了一些configuration切换,所以我可以调出一个“开发”容器与uWSGI作为代理独立的Web服务器,或一个“活”的容器的uWSGI套接字暴露在主Nginx容器,然后接pipe作为前端Web服务器。
  • 我不确定'dev'uWSGI服务器是多么有用,我可以切换到只运行Django dev服务器,并在容器中共享我的本地代码目录作为一个卷,所以我可以编辑和实时重新加载。
  • 在'服务器'回购中,我有所有的共享Dockerfiles,Nginx服务器,基地uWSGI应用程序等
  • 在“服务器”仓库中,我做了Fabric任务来完成我的部署(在服务器上签出服务器和站点仓库,build立docker图像,运行fig up等)。

谈到部署,坦率地说,我并不太热衷于Docker Registry的想法。 这似乎意味着每次要部署新的容器版本时,都必须将数百兆字节的图像文件上载到registry服务器。 这很糟糕,如果你在有限的带宽连接,看起来效率很低。

这就是为什么到目前为止,我决定通过Git部署新的代码,并在服务器上构build新的图像。 根本不使用Dockerregistry(除了基本的Ubuntu映像的公共版本)。 这似乎与Docker的实践有些相似,所以我对反馈感到好奇。

我强烈build议先陷入困境,然后构build自己的解决scheme。 如果你必须花时间学习像Dokku,Panamax等解决scheme,可能会或可能不会为你工作(我不认为他们中的任何一个真的准备好了),你可能花费那么多时间直接学习Docker …它将更容易评估下一步的解决scheme。

我试图在search的早期继续Dokku,但不得不放弃,因为它与boot2docker 不兼容 ……这意味着在OS X上,您面临着设置自己的VirtualBox虚拟机运行Docker的“乐趣”守护进程。 当我不确定我是否想要坚持Dokku在一天结束的时候如何工作的时候,似乎没有什么值得的麻烦。