1.查找镜像
docker search php8.1
docker pull from one image from NAME #从搜索结果中选一个pull到本地
docker images
2.安装php
docker run -d -v /root/nginx/www:/var/www/html -p 9000:9000 --name myphpfpm imageID
-imageID pull到本地后的镜像id号
-d 让容器在后台运行
-p 添加主机到容器的端口映射
-v 添加目录映射,即主机上的 /root/nginx/www和容器中/var/www/html目录是同步的
-v /root/nginx/www:/var/www/html : 将主机中项目的目录 /root/nginx/www 挂载到容器的/var/www/html
–name myphpfpm: 将容器命名为 myphpfpm
3.是否成功
netstat -tunlp |grep 9000
netstat -tunlp用于显示 tcp,udp的端口和进程等相关情况。详细如下:
-t (tcp) 仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化为数字
-l 仅列出在Listen(监听)的服务状态
-p 显示建立相关链接的程序名
4.宿主机创建挂在目录
mkdir ~/nginx/conf/conf.d,并新建文件php.conf,写入如入内容:
说明:
php:9000: 表示 php-fpm 服务的 URL,下面会具体说明。
/var/www/html/: 是myphpfpm容器中php文件的存储路径,映射到本地的 ~/nginx/www目录(下一步实现)。
5.安装nginx
docker run --name ngixn -p 89:80 -d \ -v /root/nginx/www:/usr/share/nginx/html:ro \ -v /root/nginx/conf/conf.d:/etc/nginx/conf.d:ro \ --link myphpfpm:php \ nginx
-p 89:80:端口映射,把nginx中的80映射到本地的89端口
~/nginx/www:是本地html文件的存储目录,/usr/share/nginx/html是容器内html文件的存储目录
~/nginx/conf/conf.d:是本地nginx配置文件的存储目录,/etc/nginx/conf.d是容器内nginx配置文件的存储目录
--link myphpfpm:php:把myphpfpm的网络并入nginx,并通过修改nginx的/etc/hosts,把域名php映射成php的IP地址,让nginx通过php:9000 访问php-fpm
nginx:指定镜像名称
6.验证
在 ~/nginx/www目录下创建 index.php,并写入phpinfo(),即可正确显示。
7.其它
nginx配置都需要重启nginx服务:
docker stop ngixn
docker start ngixn
docker restart ngixn