docker部署php7.4

拉取镜像

docker pull php:7.4-fpm

创建本地挂载目录

mkdir -p /andy/docker/php/php7.4

生成配置文件

#先启动一个php容器,检查里面的php配置
docker run -it -d --name php7.4 -p 5000:9000 php:7.4-fpm

#进入容器
docker exec -it php7.4 /bin/bash
#查看配置文件位置
#退出容器

#复制配置文件到本地挂载路径
docker cp php7.4:/usr/local/etc/php-fpm.d/www.conf /andy/docker/php/php7.4
docker cp php7.4:/usr/local/etc/php-fpm.d/www.conf.default /andy/docker/php/php7.4
docker cp php7.4:/usr/local/etc/php-fpm.d/zz-docker.conf /andy/docker/php/php7.4
docker cp php7.4:/usr/local/etc/php-fpm.d/docker.conf /andy/docker/php/php7.4

docker cp php7.4:/usr/local/etc/php /andy/docker/php/php7.4/ini

修改默认端口号为9001

#分别修改www.conf www.conf.default zz-docker.conf三个文件
将127.0.0.1:9000修改为127.0.0.1:9001
将9000修改为9001

停止并删除刚刚的容器

#停止容器
docker stop php7.4

#删除容器
docker rm php7.4

重新启动容器

#默认网络模式
docker run -d \
-v /etc/localtime:/etc/localtime \
-v /andy/docker/volume/php/php7.4:/usr/local/etc/php-fpm.d \
-v /andy/docker/volume/nginx/www:/var/www/html \
-v /andy/docker/volume/php/php7.4/ini:/usr/local/etc/php \
-p 9001:9001 --name php7.4 --privileged=true php:7.4-fpm

#使用宿主机网络
docker run -d --restart=always --network=host \
-v /etc/localtime:/etc/localtime \
-v /andy/data1/storage/php/php7.4:/usr/local/etc/php-fpm.d \
-v /andy/data1/storage/php/php7.4/ini:/usr/local/etc/php \
-v /andy/data1/storage/nginx/www:/var/www/html \
--name php7.4 --privileged=true php:7.4-fpm

进入容器安装mysqli及其他扩展

(否则php没法连接mysql,mysql_connect函数已弃用)

#进入容器
docker exec -it php7.4 /bin/bash

#安装pdo_mysql扩展
docker-php-ext-install pdo pdo_mysql

#安装mysqli
docker-php-ext-install mysqli

#重启容器
docker restart php7.4

退出容器,配置nginx支持php

#修改default.conf,使其支持php解析
vi /andy/docker/nginx/conf/conf.d/default.conf

#将"#"去掉,修改fastcgi_pass的ip,fastcgi_param的路径
location ~ \.php$ {
        root           html;
        fastcgi_pass   127.0.0.1:9001;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html$fastcgi_script_name;
        include        fastcgi_params;
    }

#重启nginx
docker restart nginx

测试php

#编写测试文件index.php
vi /andy/docker/volume/nginx/www/index.php
#文件内容如下
<?php phpinfo(); ?>

#重启nginx
docker restart nginx

#浏览器访问测试
http://ip/index.php