docker - 使用 docker-swarm 进行小型网站的生产托管

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

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

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

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

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

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

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

最佳答案

一些快速指南:

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

关于docker - 使用 docker-swarm 进行小型网站的生产托管,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48369922/

相关文章:

docker - Hyperledger测试网络-无法创建新的连接: context deadline exceeded

构建 docker 镜像时出现 Docker COPY 问题

mysql - docker 组成 : mysqld: Can't create/write to file '/var/lib/mysql/is_writable' (Errcode: 13 - Permission denied)

docker - `docker-compose build` 和 `docker build` 有什么区别?

nginx - docker swarm 模式(docker 1.13 和 compose v3)真的提供零停机滚动更新或部署吗?

docker - Sonarqube 不适用于 Docker

docker - 如何在 Golang 中模拟 docker ApiClient?

docker compose、vagrant 和不安全的存储库

docker服务更新检测自动回滚