运行一个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