繁体   English   中英

Apache使用不同的Php-Fpm容器

[英]Different Php-Fpm containers with Apache

我的生产服务器正在运行具有经典结构Db-Container,Server-Container和Php-Fpm容器的Docker。

我想做的是拆分源,以便为项目的3个主要部分使用不同的容器。 现在,它们以旧的方式工作,例如主站点使用mydomain.com/index,其他服务使用mydomain.com/api和mydomain.com/adm。

我如何设置Apache虚拟主机才能映射这样的请求?

mydomain.com -> fcgi://siteFpm:9000
mydomain.com/api -> fcgi://apiFpm:9000
mydomain.com/cms -> fcgi://cmsFpm:9000

谢谢

在conf文件或vhosts文件中使用docker-compose暴露和FastCgiExternalServer

(请注意,这是我将要采用并且仍在研究中的一种方法。随着我所知,我将进行更新。但是它也应该给您概述该怎么做。此处的示例: 获取在Vagrant VM(在Windows 7主机下)上运行的LAMP堆栈,是否有完整说明?

安装搬运工,撰写它提供了一个正式的标准化的方法来批量/自动化您泊坞窗容器运行,使用docker-compose.yml文件,而不是使用命令行docker命令单独启动每个命令。

docker-compose.yml文件中,定义您的php-fpm服务,例如:

服务:

使用EXPOSE关键字语句/指令使php-fpm的端口可用于apache。

本文显示了expose的示例: 一台主机中的多个版本的AMP,其中示例docker-compose.yml包含以下暴露语句:

  expose:      
   - "3306"   

-使sql数据库可用于其他docker容器。

您还需要确保php和apache容器都可以使用php文件-CREDIT: https : //stackoverflow.com/a/40449377/227926

然后,将需要从vhosts文件或conf文件中的Apache FastCgiExternalServer伪指令中引用相同的expose:端口以及服务名称。 我认为,选择一个vhosts文件或conf文件放入该指令似乎是个人喜好,尽管研究可能会揭示出差异,其中一个或另一个更适合您的情况。

conf文件中的示例如下所示:

FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -host 127.0.0.1:9000 -pass-header Authorization

我应该把它放在哪个conf文件中?

答:有几个选项(如上所述),更详细一些(假设Ubunut / Debian Linux是Apache在其之上运行的操作系统):-httpd.conf-000-default.conf(默认vhost)(在可用站点中)-yoursite.conf(在可用站点中)-和(例如)/etc/apache2/conf-available/php5.6-fpm.conf

这些conf文件将位于何处?

答:在您的apache docker容器中。 定义服务后,您将需要使用docker-compose.yml文件将描述的设置添加(注入)到容器中。 您可以从docket-compose.yml执行标准linux命令,以将文本插入配置文件。

您应该自动添加这些设置,而不要在容器内手动编辑Apache配置文件,因为:1)自动化意味着安装是可重复的,因此可以用于开发工作流程中的不同平台:dev,qa, uat,live / prod 2)无需手动操作3)Docker容器旨在临时使用,因为它们可以被销毁和重新创建。 任何持久性数据都应保留在它们的外部-在主机中-(在Dockerfiles中的配置,docker-composer文件,单独文件夹中的资产(图像),容器外部以及主机上的数据库存储。

FastCgiExternalServer指令的示例:

对conf文件和Apache的Debian / Ubuntu约定的引用

关于PHP-FPM的讨论-https : //serverfault.com/questions/645755/differences-and-dis-advanages-between-fast-cgi-cgi-mod-php-suphp-php-fpm

有关docker-file.yml语句的有用的相关信息

一起运行单独容器的类似讨论

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM