我有一个相对简单的 Web 应用程序,它由两个协同工作的 Docker 容器组成。一个容器托管 Web 服务器,另一个容器托管图像渲染软件。
在我的开发机器上,它可以完美地运行docker-compose
。
对于生产,此应用程序将使用亚马逊 SES和一些数据库亚马逊 DynamoDB。在这种组合中,容器本身不需要任何持久存储。由于这些服务,我的第一个想法显然是使用 Amazon EC2 来托管应用程序。
我现在的主要目标是:
- 确保应用程序可扩展自动地当网站负载过重时(当然需要负载均衡器)
- 轻松部署新的容器版本,无需中断服务
- 一劳永逸的解决方案
在网站启动之初,我预计单个 EC2 实例将轻松处理负载,节假日期间可能会出现两三个 EC2 实例的峰值。
亚马逊自己的 Docker 托管解决方案(带有负载均衡器和自动扩展)看起来非常有前途,但作为亚马逊新手,我还无法让它发挥作用,也因为配置看起来非常复杂,你必须自己把各个部分组合在一起。
我非常熟悉其他类型的集群(主要是基于 Proxmox),但 Amazon Web Services 看起来仍然很复杂(至少是配置控制台)。
有没有其他解决方案可以使这变得简单?
我花了很多时间研究 Docker Cloud/Tutum(看起来很贵)、Docker Swarm、Rancher 和其他产品(其中大多数是“测试版”),但仍然不知道该往哪个方向走。
您将如何部署这样的应用程序?
答案1
如果你已经在本地完成了所有工作,那么只需查看 docker machine。只需从你首选的提供商处获得一组 API 密钥,你的 docker compose 就可以在生产部署上运行:https://docs.docker.com/machine/drivers/
Oreilly 刚刚发布了一本关于这个主题的电子书:https://exoscale.ch/docker-in-the-cloud