【问题标题】:How link N php containers with 1 nginx container如何将 N 个 php 容器与 1 个 nginx 容器链接
【发布时间】:2016-12-27 19:33:00
【问题描述】:

我正在将我的 wordpress 农场(10 次安装)迁移到 docker 架构, 我想要一个 nginx 容器并运行 10 个 php-fpm 容器(mysql 在外部服务器上) php 容器被命名为 php_domainname,并且还包含持久存储 我想知道怎么做: a)如何将域名和容器名传递给 vhost conf 文件¿

b)当我启动一个 php-fpm 容器时 1) 将 vhost.conf 文件添加到 nginx confs 文件夹中 2)将卷(持久存储)添加到nginx实例 3) 重启nginx实例

我创建的所有 nginx-php docker,每个实例都有两个进程,但我认为有 10+1 个 nginx 会使机器过载,并打破 docker 的优势 谢谢

【问题讨论】:

    标签: php wordpress nginx docker docker-compose


    【解决方案1】:

    不用重新发明轮子,这个已经被docker-proxy解决了,也是available on docker hub

    【讨论】:

      【解决方案2】:

      您也可以使用 consul 或 like 与 service-autodiscovery。这意味着:

      • 您将领事服务器添加到您的堆栈中
      • 您将所有 FPM 服务器注册为节点
      • 您在 consul 中将每个 FPM 守护进程注册为服务“fpm”

      对于您的 nginx vhost conf,假设位于 /etc/nginx/conf.d/mywpfarm.conf,您使用 consul-template https://github.com/hashicorp/consul-template 在您使用的 go-template 中生成配置

      upstream fpm {
        {{range service "fpm"}}
          server {{.Name}} {{.Address}}:{{.Port}};
        {{end}}
      }
      

      在您将基于 .php 的请求转发到上游 FPM 时,您现在使用上面的上游。这样 nginx 将通过所有可用服务器进行负载平衡。如果您关闭一个 FPM 主机,配置会自动更改并且 FPM 上游会得到调整(这就是 consul-template 的用途,它会监视更改)-因此您可以随时添加新的 FPM 服务并非常容易地横向扩展

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-11-08
        • 1970-01-01
        • 2018-10-28
        • 2017-02-13
        • 2015-07-06
        • 1970-01-01
        相关资源
        最近更新 更多