【问题标题】:Best deployment strategy with docker compose (LAMP stack)使用 docker compose 的最佳部署策略(LAMP 堆栈)
【发布时间】:2018-06-29 21:17:23
【问题描述】:

我决定在我的所有项目中开始使用 docker,并且我对部署方面的最佳实践很感兴趣。

如果我有一个本地 docker 环境,即运行 php-apache、mysql 和 redis 服务,那么部署时最好的策略是什么?您是否有一个用于生产的自定义 docker-compose 配置,它删除了 redis 和 mysql 服务(假设您希望它们在自己的专用服务器上)?

【问题讨论】:

  • 如果你要无缘无故地对我投反对票,至少有勇气告诉我原因。我知道 stackoverflow 是针对编程相关问题的,但最后我检查了一下,部署是其中很大一部分。
  • 我建议从官方文档 docs.docker.com/compose/production 开始。我还将研究负载平衡存储,因为您不再需要考虑在特定主机上运行的服务。我发现 docker 和部署最有趣的一件事是,您可以使用 swarms/clusters 来扩展您需要按需扩展的服务。请注意,我没有投反对票。
  • 感谢 JimL - 这是有道理的。因此它可以与添加的服务一起部署,并使用群/集群,它只会根据需要创建更多。您是否熟悉它如何使所有集群之间的所有数据库数据保持同步,因为听起来每个人都有自己的数据库实例(如果这是它部署的服务之一)

标签: php amazon-web-services docker docker-compose lamp


【解决方案1】:

有许多可行的方法可以在生产环境中运行 PHP 容器,因此要全面回答您的问题有点困难。我将提供几个选项:

  • 使用Docker Cloud 之类的容器托管服务通过内置的 Apache 服务托管您的 PHP 代码。
  • 使用托管在您自己的服务器上的编排服务(如SwarmKubernetes)。您将在此处进行更多设置,但它也会为您提供更多控制权。还有一些服务可以让这更容易,例如RancherCodemason
  • 在一台机器上运行 docker-compose。当然,它不是水平可扩展的,但如果您只是在处理一个副项目或小型应用程序,您可以在一台服务器上运行所有容器来启动。

作为关于数据库容器的说明,您可以将您的数据库容器化,并且假设您将实际数据放在一个卷中并有一个合理的备份系统,那么容器没有理由不这样做注意安全。您可能希望首先为您的数据库运行一个容器或使用托管数据库服务,因为跨多个容器扩展数据库可能会变得复杂(但here's a little bit about how you might do it with MySQL)。

【讨论】:

    【解决方案2】:

    我想我会自己回答这个问题。

    在深入挖掘之后,我发现将数据库部署在容器中并不是一个好主意。如果我使用 swarm,则很难在整个系统中保持数据完整性。

    看起来大多数人只是单独托管数据库,并且只在本地开发环境中将数据库容器化。

    因此,对于部署,目前最好的选择是仅部署已配置的 Web 服务器和任何其他无状态服务器要求。

    【讨论】:

      猜你喜欢
      • 2015-12-22
      • 2020-05-18
      • 1970-01-01
      • 2018-07-01
      • 2010-12-26
      • 1970-01-01
      • 2013-03-01
      • 2011-02-14
      • 1970-01-01
      相关资源
      最近更新 更多