利用docker swarm为小型网站制作托管

利用docker swarm为小型网站制作托管,docker,docker-compose,docker-swarm,docker-machine,Docker,Docker Compose,Docker Swarm,Docker Machine,我们有一个旧的PHP网站,我们用elixir重写了它。上一个页面以“老式”方式托管,代码部署到FTP,sql通过phpmyadmin管理 我正在本地使用docker compose运行数据库 我的计划是只使用容器在DigitalOcean上主持新项目。我最近试用了docker机器,可以像使用本地机器一样使用DO虚拟机。我也读过关于docker swarm的文章,但它适用于多个虚拟机,多个容器用于同一服务 我最初的想法是只创建一个docker swarm管理器,并通过docker machine连

我们有一个旧的PHP网站,我们用elixir重写了它。上一个页面以“老式”方式托管,代码部署到FTP,sql通过phpmyadmin管理

我正在本地使用
docker compose
运行数据库

我的计划是只使用容器在DigitalOcean上主持新项目。我最近试用了
docker机器
,可以像使用本地机器一样使用DO虚拟机。我也读过关于docker swarm的文章,但它适用于多个虚拟机,多个容器用于同一服务

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

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

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

一些快速指南:

  • 即使只有一台服务器,我建议在您获得新功能时启用Swarm,默认情况下它的设计目的是保持容器运行,并使更新/更换容器的过程更容易(可能零停机)
  • 如果在DO服务器上使用Swarm,则可以使用
    docker stack deploy
    命令,并且可以在本地继续使用
    docker compose
    ,并且它们可以共享相同/相似的compose文件。docker compose命令仅用于本地测试/开发,不理解Swarm,但两者的文件格式相同
  • 没有理由不使用两台甚至三台服务器。三位经理会让它变得很有趣。如果需要降低成本,您可以使用5美元的服务器(假设站点在1GB内存中运行)
  • 请记住,拥有多台服务器不仅关系到容量,还关系到可用性和容错性。Swarm最棒的地方在于它设计成可以像运行一台服务器一样轻松地运行3台服务器。这些命令与单个VM相同
  • 我不会使用docker机器,而是尝试通过store.docker.com的说明为Linux发行版安装,因为这样可以更好地控制docker版本。对于生产,您希望坚持稳定的季度发布(最新版本为17.12)

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

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

    有关软件包和安装步骤的详细信息见文章“

    截至2019年3月,我可以确认jelastic尚未为Docker Swarm做好生产准备-我尝试了多家供应商,结果导致了灾难。当您扩展或重新启动节点时,这种行为是不可预测的——在我们的例子中,IP地址发生了更改,所有装入的卷都消失了,jelastic在这篇文章之后联系了我,询问发生了什么,并说他们将对平台进行相应的改进,以确保其他人不会发生同样的事情。事实上,在与Meezaan ud Din交谈后,澄清了主要问题与Docker技术本身有关,因为它不支持克隆swarm群集或迁移到其他数据中心后的IP更改。更多详细信息可在链接中找到。