Docker独立容器与耦合容器

时间:2018-03-30 15:20:23

标签: php mysql docker nginx

我有几十个我想要停靠的php应用程序。我想知道什么是最好的管理和性能设计。

  1. 包含所有服务的一个大容器(php-fpm,mysql,nginx等)

  2. 为所有服务分开容器:

    • 容器PHP-FPM-APP1
    • 容器的nginx-APP1
    • 容器的MySQL-APP1
    • 容器PHP-FPM-APP2
    • 容器的nginx-APP2
    • 容器的MySQL-APP2
  3. 一个服务容器,该服务托管所有应用程序:

    • container-php-fpm - 适用于所有php-fpm池
    • container-nginx - 适用于所有nginx虚拟主机
    • container-mysql - 适用于所有数据库
  4. 我了解运行单独的容器可让您更改一个服务而不会影响另一个服务。您可以运行不同的php配置和扩展和版本,而无需担心其他服务受到影响。我的所有应用程序都是基于Wordpress的,因此配置将(或应该)全面一致。

    现在我倾向于分离,但我不确定这是否是最好的方法。

    你们有什么想法?

3 个答案:

答案 0 :(得分:2)

您应该在容器中运行一个服务,这就是它的设计方式。所以1出了门。

如果你看三个,你的应用程序之间就会紧密耦合。如果你想迁移到app1的新php版本,或者在那里有不同的依赖,那你就麻烦了,所以这不是一个好的。

标准是2.每个服务一个容器。

答案 1 :(得分:0)

我见过的最常见的模式是每个应用程序一个单独的容器。话虽如此,相关容器彼此靠近但仍然不同也很有价值,因此在Kubernetes中使用了Pods的概念。

我建议每个应用程序使用一个容器。

答案 2 :(得分:0)

每个码头文档multi-service container

  

通常建议您将关注的区域分开   每个容器使用一个服务。该服务可能会分成多个   进程(例如,Apache Web服务器启动多个worker   流程)。拥有多个流程是可以的,但要获得最大收益   从Docker中获益,避免一个容器负责   整个应用程序的多个方面。你可以连接多个   容器使用用户定义的网络和共享卷。

同样基于他们的best practices

  

每个容器应该只有一个问题

     

将应用程序拆分为多个容器使其变得更加容易   水平扩展并重用容器。

我建议使用选项2(所有服务的单独容器)。