Docker两个容器中实现httpd服务和php-fpm模块

流程:

            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

你可能感兴趣的:(Docker两个容器中实现httpd服务和php-fpm模块)