Docker创建PHP运行环境 + nginx + redis扩展
Docker创建PHP运行环境 + nginx + redis扩展
·
下载相关镜像
docker pull nginx
docker pull php:7.4-fpm
创建挂载的文件
在/Users/docker下创建的(随意,配置时路径正确即可)
mkdir www
mkdir nginx
cd nginx
mkdir conf.d
cd conf.d
vim default.conf
# -----------default.conf中的内容开始---------
server {
listen 80 default_server;
server_name localhost;
root /usr/share/nginx/html;
location / {
index index.php index.html index.htm;
autoindex off;
}
location ~ \.php(.*)$ {
root /var/www/html/;
fastcgi_pass 172.17.0.2:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
include fastcgi_params;
}
}
# -----------default.conf中的内容结束---------
cd ../../www
vim info.php
# -----------info.php中的内容开始---------
<?php
phpinfo();
?>
# -----------info.php中的内容结束---------
启动PHP镜像
docker run -p 9000:9000 --name myphp -v /Users/dockerfile/www/:/var/www/html/ --privileged=true -d php:7.4-fpm
(-v 本地路径:容器内路径)
# 查看php镜像的ip地址
docker inspect --format='{{.NetworkSettings.IPAddress}}' myphp
返回172.17.0.2
# 修改default.conf配置文件,将fastcgi_pass改为返回的值 172.17.0.2:9000
fastcgi_pass 172.17.0.2:9000;
启动nginx镜像
docker run -p 80:80 --name mynginx -v /Users/dockerfile/www:/usr/share/nginx/html -v /Users/dockerfile/nginx/conf.d:/etc/nginx/conf.d --privileged=true -d nginx
(-v 本地路径:容器内路径)
浏览器访问测试
localhost:info.php
PHP添加redis扩展
docker exec -it php容器 /bin/bash
curl -L -o /tmp/redis.tar.gz https://github.com/phpredis/phpredis/archive/3.1.3.tar.gz
tar xfz /tmp/redis.tar.gz
mv /tmp/phpredis-3.1.3/ /usr/src/php/ext/redis
rm -f /tmp/redis.tar.gz
cd /usr/local/bin
docker-php-ext-install redis
vim /usr/local/etc/php/php.ini
extension=redis.so #添加扩展
docker restart php容器
常见问题
CentOS7 环境下因为宿主的SELINUX,导致在nginx容器内无法访问配置文件(default.conf),进而容器无法提供web服务
解决方法:参考:https://www.jb51.net/article/113296.htm
#############方法一############# #在宿主主机关闭SELINUX #临时关闭 setenforce 0 #永久关闭 修改/etc/sysconfig/selinux文件 SELINUX=disabled #############方法二############# #以特权方式运行容器 #--privileged参数为true docker run -it --privileged=true -d nginx
更多推荐
已为社区贡献4条内容
所有评论(0)