Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Docker分离容器与耦合容器_Php_Mysql_Docker_Nginx - Fatal编程技术网

Php Docker分离容器与耦合容器

Php Docker分离容器与耦合容器,php,mysql,docker,nginx,Php,Mysql,Docker,Nginx,我有几十个php应用程序,我想dockerize。我想知道什么是管理和性能方面的最佳设计 一个包含所有服务的大容器(php fpm、mysql、nginx等) 所有服务的单独容器: container-php-fpm-app1 container-nginx-app1 container-mysql-app1 container-php-fpm-app2 container-nginx-app2 container-mysql-app2 一个服务容器,该服务承载所有应用: 容器php fp

我有几十个php应用程序,我想dockerize。我想知道什么是管理和性能方面的最佳设计

  • 一个包含所有服务的大容器(php fpm、mysql、nginx等)

  • 所有服务的单独容器:

    • container-php-fpm-app1
    • container-nginx-app1
    • container-mysql-app1
    • container-php-fpm-app2
    • container-nginx-app2
    • container-mysql-app2
  • 一个服务容器,该服务承载所有应用:

    • 容器php fpm-适用于所有php fpm池
    • 容器nginx-适用于所有nginx虚拟主机
    • 容器mysql-适用于所有数据库
  • 我知道运行单独的容器可以让您在不影响另一个服务的情况下对一个服务进行更改。您可以运行不同的php配置、扩展和版本,而不用担心其他服务会受到影响。我所有的应用程序都是基于Wordpress的,所以配置将(或应该)保持一致

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


    你们怎么看?

    我见过的最常见的模式是每个应用程序都有一个单独的容器。这就是说,让相关容器彼此靠近但仍然不同也有价值,因此库伯内特斯中使用了豆荚的概念


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

    您应该在一个容器中运行一个服务,这就是它的设计方式。那么1就不在了

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

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

    每个docker文档:

    通常建议您通过以下方式将关注的领域分开: 每个容器使用一个服务。这项服务可能会分成多个分支 进程(例如,Apache web服务器启动多个工作进程) 过程)。有多个流程是可以的,但要获得最多 受益于Docker,避免一个容器负责 整个应用程序的多个方面。您可以连接多个 使用用户定义的网络和共享卷的容器

    也基于他们的:

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

    将应用程序解耦到多个容器中使其更加容易 水平缩放并重复使用容器

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