下载相关镜像

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

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐