生产托管小型网站与docker-swarm

时间:2018-01-21 17:55:27

标签: docker docker-compose docker-swarm docker-machine

我们有一个旧的PHP网站,我们已经用elixir重写了。上一页是在老式的#34;方式,代码部署到FTP,sql通过phpmyadmin管理。

我在本地使用docker-compose来运行数据库。

我的计划是仅使用容器在DigitalOcean上托管新项目。我最近尝试了docker-machine并且可以使用DO VM,就像本地机器一样。我还阅读了docker-swarm,但它适用于具有多个容器的多个VM,用于同一服务。

我最初的想法是只创建一个docker-swarm管理器并通过docker-machine连接到该管理器并执行docker-compose命令。

目标是拥有一个可以自动化的解决方案,并且可能有1个或2个备份容器。但我避免拥有多个虚拟机,因为该网站每天只有几百个访问者。

这是一个可行的解决方案还是有更简单的方法?

2 个答案:

答案 0 :(得分:3)

一些快速指南:

  1. 即使只有一台服务器,我建议您在获得新功能时启用Swarm,并且默认设计它以保持容器运行,并使更新/更换该容器的过程更容易(可能零停机时间) )。
  2. 如果您在DO服务器上使用Swarm,则可以使用docker stack deploy命令并在本地继续使用docker-compose,并且他们可以共享相同/类似的撰写文件。 docker-compose命令仅适用于本地test / dev,并不了解Swarm,但两者之间的文件格式相同。
  3. 没有理由使用两台甚至三台服务器。三位经理会把它变成HA。如果您需要降低成本(假设站点运行在1GB内存中),您可以使用5美元的服务器。
  4. 请记住,拥有多台服务器并不仅仅是容量,而是关于可用性和容错能力。 Swarm的优点在于它设计用于运行3台服务器,就像一台服务器一样简单。这些命令与单个VM相同。
  5. 我不会使用docker-machine,而只是尝试通过store.docker.com的指令安装Linux发行版,因为您可以更好地控制Docker版本。对于生产,您希望坚持使用稳定的季度版本(最新版本为17.12)。

答案 1 :(得分:1)

如果您想避免手动配置但仍能获得所需的高可用性和成本效率,请尝试运行Jelastic预先打包的Docker Swarm模板:

  • 它具有内置的自动聚类和缩放功能
  • 自动执行安装,您将通过直观的用户界面
  • 获得对群集的完全访问权限
  • 容器直接在裸机上运行,​​因此无需为每项服务保留完整的VM(并且您可以选择要在其上运行项目的数据中心)
  • 付款是根据RAM和CPU的实际消耗
  • 完成的
  • 容器自动分布在不同的硬件服务器上,以提高高可用性

有关打包和安装步骤的详细信息,请参阅文章" Docker Swarm Auto-Clustering and Scaling with PaaS Power Armor。"