流程:
ubuntu 的Docker中a容器安装httpd
ubuntu 的Docker中b容器安装php-fpm模块
配置a容器httpd配置文件
a容器:172.18.0.4(apache)
[root@localhost ~]# docker pull httpd:latest
[root@localhost ~]# docker images
[root@localhost ~]# docker run --name httpd-test -p 8080:80 -d httpd
参数说明:
--name httpd-test:容器名称。
-p 8080:80: 端口进行映射,将本地 8080 端口映射到容器内部的 80 端口。
-d httpd: 设置容器在在后台一直运行。
[root@localhost ~]# cat /usr/local/apache2/conf/httpd.conf
DirectoryIndex .php
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
Proxyrequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://172.18.33.11:9000/www/$1
#配置完后启动httpd服务:docker stop httpd-test
#/www/:此行存放php文件目录,以后apache所有的php文件放到172.18.0.3(php-fpm)目录,等于接管了172.18.0.4(apache)服务器的php文件
#注意:编辑/etc/httpd/conf/httpd.conf记得开启以下模块
#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
b 容器:172.18.0.3(php-fpm 7.1)
[ root@localhost ~]#docker pull php:7.1-fpm
[ root@localhost ~]# docker images
[ root@localhost ~]#docker run --name php-test -v ~/www/html:/www -d php:7.1-fpm
命令说明:
--name php-test: 将容器命名为 php-test。
-v ~/www/html:/www: 将主机中项目的目录 www 挂载到容器的 /www
[ root@localhost ~]#docker run --name apache-php-test -p 8083:80 -d \
-v ~/www/html:/var/www/html:ro \
-v ~/local/conf/httpd.conf:/usr/local/conf/httpd.conf:ro \
--link php-test:php \
nginx
-p 8083:80: 端口映射,把apache中的 80 映射到本地的 8083 端口。
~/www/html: 是本地 html 文件的存储目录,/var/www/html 是容器内 html 文件的存储目录。
~/local/conf/httpd.conf: 是本地 apache配置文件的存储目录,/usr/local/conf/httpd.conf 是容器内 apache配置文件的存储目录。
--link php-test:php: 把php-test的网络并入apache-php-test,并通过修改httpd的 /etc/hosts,把域名php映射成 127.0.0.1,让 nginx 通过 php:9000 访问 php-fpm。
注意:/usr/local/conf/httpd.conf需配置9000端口访问,上面a容器时中有说明
listen = 9000
#监听 IP 与端口,如果是监听在所有 IP 上只填端口
listen.allowed_clients = 172.18.0.4
#允许连接的 IP,如果注释表示允许所有ip链接
#配置完后在创建目录:由于配置apache的时候写的目录为~/www/html,我们得创建相同的
[root@localhost ~]# mkdir ~/www/html
[root@localhost ~]# vim ~/www/html/index.php
phpinfo();
?>
#配置完后启动apache-php-test容器:docker restart apache-php-test