在conf文件或vhosts文件中使用docker-compose公开和FastCgiExternalServer
(请注意,这是我将采取的一种方法,并且仍在研究中。我会在了解更多信息后进行更新。但它应该也能给您一个要做什么的概述。我确实更新了我的答案,而不是一个空洞的承诺,请参阅此这里的例子:在 Vagrant VM(在 Windows 7 主机下)上运行 LAMP 堆栈,完整说明?)
Install docker 撰写它提供了一种官方标准化方法来批量/自动运行 docker 容器,使用docker-compose.yml
文件,而不是使用命令行docker
命令单独启动每个命令。
In the docker-compose.yml
文件,定义您的 php-fpm 服务,例如:
服务:
use the EXPOSE
关键字语句/指令,使 php-fpm 的端口可用于 apache。
一个例子expose
如本文所示:一台主机上有多个版本的 AMP示例中的位置docker-compose.yml
包含这个公开声明:
expose:
- "3306"
- 这使得 sql 数据库可供其他 docker 容器使用。
您还需要确保 php 文件可用于 php 和 apache 容器 - 信用:https://stackoverflow.com/a/40449377/227926
那么,同样的expose:
端口以及服务名称需要从 Apache 引用FastCgiExternalServer
vhosts 文件或conf 文件中的指令。我认为,选择 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(默认虚拟主机)(在可用站点中)
- yoursite.conf(在可用站点中)
- 和(例如)/etc/apache2/conf-available/php5.6-fpm.conf
这些conf文件位于哪里?
答案:在你的 apache docker 容器内。定义服务后,您将需要使用 docker-compose.yml 文件将描述的设置添加(注入)到容器中。您可以从 doket-compose.yml 执行标准 Linux 命令,将文本插入到配置文件中。
您应该自动添加这些设置,而不是在容器内手动编辑 Apache 配置文件,因为:1) 自动化意味着设置是可重复的,因此可以用于开发工作流程中的不同平台:dev、qa、 uat、live/prod 2) 无需手动工作 3) Docker 容器旨在是短暂的,因为它们可以被销毁和重新创建。任何持久数据都应该保存在它们之外 - 在主机中 - (Dockerfiles中的配置、docker-composer文件、单独文件夹中的资产(图像)、容器外部和主机上的数据库存储。
FastCgi 外部服务器指令示例:
- Apache 2.4 + PHP-FPM 和授权标头
- https://www.cyberciti.biz/tips/rhel-fedora-centos-apache2-external-php-spawn.html
- https://www.howtoforge.com/using-php5-fpm-with-apache2-on-centos-6.2-p2
- Apache FastCGI PHP 中 FastCgiExternalServer 和 FastCgiServer 的区别?
- Ubuntu 服务器上的 Apache 2.4.6:客户端被服务器配置拒绝 (PHP FPM) [加载 PHP 文件时]
- https://www.digitalocean.com/community/questions/apache-2-4-with-php5-fpm?answer=12056
- https://www.howtoforge.com/tutorial/apache-with-php-fpm-on-ubuntu-16-04/#-making-phpfpm-use-a-tcp-connection-可选
conf 文件和 Apache 的 Debian/Ubuntu 约定的参考
- https://serverfault.com/questions/216252/how-to-configure-apache-sites-available-vs-httpd-conf
- https://forum.owncloud.org/viewtopic.php?t=30157
-
https://askubuntu.com/questions/378734/how-to-configure-apache-to-run-php-as-fastcgi-on-ubuntu-12-04-via-terminal
关于 PHP-FPM 的讨论
- https://serverfault.com/questions/645755/differences-and-dis-advanages- Between-fast-cgi-cgi-mod-php-suphp-php-fpm
有关 docker-file.yml 语句的有用相关信息
- docker compose 中“image”和“build”之间的区别
- https://docs.docker.com/compose/compose-file/#build
关于一起运行单独容器的类似讨论
- https://medium.com/docker-captain/multiple-versions-of-amp-in-one-host-6e107c836cd8
- php docker 链接 apache docker
- 带有 PHP7 fpm 和 nginx 的多 Docker 容器
- Docker - 在不同网站的主机和容器上运行 Apache
- 将 nginx 和 php-fpm 容器链接在一起,以便在 docker prod 中快速交互
- 如何正确链接 php-fpm 和 Nginx Docker 容器?