如何链接N个php容器和1个nginx容器

时间:2016-08-20 22:46:40

标签: php wordpress nginx docker docker-compose

我正在将我的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的优势 感谢

2 个答案:

答案 0 :(得分:0)

无需重新发明轮子,docker-proxy available on docker hub已经解决了这个问题。

答案 1 :(得分:0)

您还可以使用consul或类似服务自动发现。这意味着:

  • 您将一个consul服务器添加到您的堆栈
  • 您将所有FPM服务器注册为节点
  • 您将每个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服务并且水平扩展非常容易