Crazy knowledge base

win10(专业版) Docker部署Nginx php Redis 及扩展

运行一个PHP容器

docker run --name php7.4-fpm -v /D/workspace/php:/www/web -p 9000:9000 -d php:7.4.13-fpm-alpine3.12

复制php的配置文件和日志文件到本地

docker cp php7.4-fpm:/usr/local/etc D:\ServerRoot\Docker\php7.4.13\php-conf
docker cp php7.4-fpm:/usr/local/var/log D:\ServerRoot\Docker\php7.4.13\php-log
docker cp php7.4-fpm:/www/web D:\ServerRoot\Docker\nginx\www

php7.4-fpm:是我们前面运行的php的名称

php-log 文件夹中没有东西是因为复制出来的log下本身就没有文件,所以不用管

删除原有的php7.4-fpm,重新运行创建一个PHP容器

docker run -d -v /D/ServerRoot/Docker/php7.4.13/php-conf:/usr/local/etc -v /D/ServerRoot/Docker/php7.4.13/php-log:/usr/local/var/log -v /D/workspace/php:/www/web -p 9000:9000 --name php7.4-fpm php:7.4.13-fpm-alpine3.12

 

 

如果先安装php可以使用如下命令把 myphp-fpm 的网络并入 nginx,并通过修改 nginx 的 /etc/hosts,把域名 php 映射成 127.0.0.1,让 nginx 通过 php:9000 访问 php-fpm。

docker run --name nginx1.8.1 -p 80:80 -p 443:443 -v /D/ServerRoot/Docker/nginx/conf.d:/etc/nginx/conf.d -v /D/ServerRoot/Docker/nginx/conf/nginx.conf:/etc/nginx/conf/nginx.conf -v /D/workspace/php:/usr/share/nginx/html -v /D/ServerRoot/Docker/nginx/logs:/var/log/nginx -v /D/ServerRoot/Docker/nginx/cert:/etc/nginx/cert --link php7.4-fpm:php -d nginx:1.8.1

# 命令分析

docker run --name nginx1.8.1 # 容器名称
  -p 80:80 # 映射80端口号
  -p 443:443 # 映射443端口号
  -v /D/workspace/php:/usr/share/nginx/html # 指定html页面位置
  -v /D/ServerRoot/Docker/nginx/conf/nginx.conf:/etc/nginx/conf/nginx.conf # 指定默认配置文件位置
  -v /D/ServerRoot/Docker/nginx/conf.d:/etc/nginx/conf.d # 指定站点配置文件位置
  -v /D/ServerRoot/Docker/nginx/logs:/var/log/nginx # 指定日志文件位置
  -v /D/ServerRoot/Docker/nginx/cert:/etc/nginx/cert # 指定SSL证书文件位置
  --link php7.4-fpm:php # 把php7.4-fpm的网络并入nginx1.8.1
  -d nginx:1.8.1 # 设置容器在在后台一直运行。

 

 

<?php
    echo phpinfo();
?>
docker run --name php7.4-fpm -v /D/ServerRoot/Docker/nginx/www:/www/web -p 9000:9000 -d php:7.4.13-fpm-alpine3.12

docker inspect abe4d7a1d703
server {
    listen       80;
    server_name  localhost;

    location / {
        root   /usr/share/nginx/html;      //nginx的容器的目录
        index  index.html index.htm index.php;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    location ~ \.php$ {
        root /www/web;                     //必须是容器中的目录,而不是你挂在宿主主机的目录
    fastcgi_pass   172.17.0.5:9000;    //如果没有在nginx容器中加入php网络,这需监听 php容器IP:9000
    
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

 

为docker下的php容器安装php-redis扩展【编译安装】

使用docker安装的PHPFPM容器没有Redis扩展,需要安装一下扩展。

首先进入docker的PHPFPM容器

$ docker exec -it myphpfpm /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
$ rm -r /tmp/redis.tar.gz
$ mkdir -p /usr/src/php/ext
$ mv phpredis-3.1.3 /usr/src/php/ext/redis
$ docker-php-ext-install redis

执行成功之后,重启php-fpm容器

 

 


参考:

https://blog.csdn.net/abcdefgh512/article/details/103838703

https://blog.csdn.net/shachao888/article/details/108904749

https://www.cnblogs.com/jso0/p/10956781.html

https://blog.csdn.net/srodong/article/details/105030387

https://www.runoob.com/docker/docker-install-php.html

扩展安装参考

https://blog.csdn.net/raoxiaoya/article/details/106874791

https://blog.csdn.net/abcdefgh512/article/details/103838703

https://blog.csdn.net/weixin_43272072/article/details/106124752

win10(专业版) Docker部署Nginx php Redis 及扩展

发表评论

滚动到顶部