目前我有 3 台 linode 服务器:
1:缓存服务器(Ubuntu,清漆)
2:应用服务器(Ubuntu、nginx、rabbitmq-server、python、php5-fpm、memcached)
3:数据库服务器(Ubuntu,postgresql + pg_bouncer)
在我的应用服务器上,我有多个站点(顶级域)。每个站点都位于使用 virtualenvwrapper 创建的虚拟环境中。有些网站很大,流量很大,有些网站很小,流量很少。
一个典型的站点由 python (django)、celery (beat、flower) 和 gunicorn 组成。
我当前的开发模式现在是在应用服务器上的暂存环境中工作,并将更改提交到 git。然后将环境更改为生产环境并执行 git pull
, 和 ./manage.py migrate
并重新开始执行 sudo supervisorctl restart sitename:
的过程,但这需要时间!一定有更简单的方法!
因此,docker 似乎可以帮助简化一切,但我无法决定如何管理每个站点内的所有站点和容器的最佳方法。
我看过http://panamax.io和 https://github.com/progrium/dokku ,但不确定其中一个是否符合我的需求。
理想情况下,我会在本地机器上运行每个站点的开发版本(模拟缓存服务器、应用服务器和数据库服务器),在那里进行代码更改并测试它们。当我看到更改生效时,我会执行一个命令来完成所有繁重的工作并将更改发送到 linode 服务器(我认为主要是应用服务器),执行所有迁移并在服务器上重新启动项目.
谁能指出我如何实现这一目标的正确方向?
最佳答案
我遇到了同样的问题。我并不认为这是最好的答案,并且有兴趣看看其他人提出了什么。
Docker 上似乎还没有任何真正的交 key 解决方案。
令人沮丧的是,大多数 'Django+Docker' 教程只关注单个 Django 站点,因此它们将 Web 服务器和所有内容捆绑在同一个 Docker 容器中。我认为如果您在服务器上有多个站点,您希望它们共享一个网络服务器,但这很快就会比教程中介绍的更复杂,这不再有太大帮助。
我想出的大致是这样的:
fig up
等)。 说到部署,坦率地说,我不太热衷于 Docker Registry 的想法。这似乎意味着您每次要部署新的容器版本时都必须将数百兆字节的图像文件上传到注册表服务器。如果您当时处于有限的带宽连接上,这很糟糕,而且看起来效率很低。
这就是为什么到目前为止我决定通过 Git 部署新代码并在服务器上构建新图像。我根本不使用 Docker Registry(除了用于基本 Ubuntu 镜像的公共(public)注册表)。这似乎有点违背 Docker 实践的原则,所以我很好奇反馈。
我强烈建议您先陷入困境并构建自己的解决方案。如果你必须花时间学习像 Dokku、Panamax 等可能对你有用也可能不适用的解决方案(我认为它们中的任何一个都还没有真正准备好)你不妨花时间直接学习 Docker ......然后将更容易进一步评估解决方案。
我试图在搜索的早期继续使用 Dokku,但不得不放弃,因为 it's not compatible与 boot2docker ...这意味着在 OS X 上,您将面临设置自己的 VirtualBox 虚拟机来运行 Docker 守护进程的“乐趣”。当我不确定我是否想在一天结束时坚持 Dokku 的工作方式时,似乎不值得为此麻烦。
关于django - 使用具有多个站点的 docker 进行开发和生产,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28321915/