首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >不同的Php-Fpm容器与Apache

不同的Php-Fpm容器与Apache
EN

Stack Overflow用户
提问于 2017-03-28 21:47:10
回答 1查看 2.3K关注 0票数 1

我的生产服务器正在运行Docker,它采用了经典的Db-Container、Server-Container和Php-Fpm容器结构。

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

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

代码语言:javascript
复制
mydomain.com -> fcgi://siteFpm:9000
mydomain.com/api -> fcgi://apiFpm:9000
mydomain.com/cms -> fcgi://cmsFpm:9000

谢谢

EN

回答 1

Stack Overflow用户

发布于 2018-06-16 07:53:23

在配置文件或vhosts文件中使用docker-compose expose和FastCgiExternalServer

(请注意,这是我将采取的方法,并且仍在研究中。当我知道更多的时候我会更新的。但希望它也能给你一个做什么的大纲。我确实更新了我的答案,而不是一个空洞的承诺,请参阅此处的示例:Getting a LAMP stack running on a Vagrant VM (under windows 7 host), full instructions?)

Install docker-compose提供了一种正式的标准化方法来批处理/自动化运行您的docker容器,使用一个docker-compose.yml文件,而不是使用命令行docker命令来单独启动每个命令。

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

服务:

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

本文中给出了一个expose的示例:Multiple versions of AMP in One Host,在示例中docker-compose.yml包含以下expose语句:

代码语言:javascript
复制
  expose:      
   - "3306"   

使sql数据库可供其他码头容器使用的

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

然后,需要从vhosts文件或FastCgiExternalServer文件中的Apache FastCgiExternalServer指令引用相同的expose:端口和服务名称。选择vhosts文件或conf文件来放置指令,我认为这似乎是个人偏好,尽管研究可能会发现其中之一更适合您的情况的差异。

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

代码语言:javascript
复制
FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -host 127.0.0.1:9000 -pass-header Authorization

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

答:有几个选项(如上所述),更详细地说,这些是(假设运行Apache的操作系统是Ubunut/Debian Linux ):- httpd.conf - 000-default.conf (默认vhost) (在sites-available中)- yoursite.conf (在sites-available中)-和(例如)/etc/apache2/conf-available/php5.6fpm.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语句的有用相关信息

关于一起运行独立容器的类似讨论

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43071337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档