【环境搭建】docker+nginx部署PHP
目的
使用docker容器完成nginx的安装以及部署PHP网页
步骤
一、 安装nginx
1. 拉取Nginx镜像
docker pull nginx //拉取镜像
docker images //查看本地镜像
这里注意需要记一下nginx的IMAGE ID
,我这里的ID是605c
![](https://img2023.cnblogs.com/blog/3159215/202304/3159215-20230402224803411-346978774.png)
2. 创建Nginx容器
docker run --name nginx-test -p 80:80 -d nginx
- docker run : 是创建一个新容器并运行一个命令
- --name : 给容器起一个名字,指的是 nginx-test
- -p : 指定宿主机与容器内部端口的映射关系,-p [宿主机端口]:[容器内部端口],
- -d : 设置容器在在后台一直运行
- 最后面的 nginx 是镜像名称,也可以是镜像ID,例如上面提到的 “605c”
创建容器后使用docker ps
即可查看正在运行的容器,这里我的容器ID是 902f
![](https://img2023.cnblogs.com/blog/3159215/202304/3159215-20230402225630900-926062934.png)
访问这台机器的ip加上端口号,如果返回Welcom to nginx
则成功(如果设置映射的端口是80则可以不加端口)
3. 挂载文件
我们可以使用docker exec -it 902f /bin/bash
进入容器内部进行配置文件的管理(容器就是一台linux机器),但是比较麻烦,我们可以将这台容器的文件挂载到我们本机,这样我们只要在本机修改文件即可。
容器内部的文件路径如下
/etc/nginx //配置文件目录
/usr/share/nginx/html //默认html文件目录
/var/log/nginx //日志文件
在合适的路径下新建nginx目录,这里我选择在/home/kali/
下创建,进入/home/kali/nginx
,然后将容器内的nginx.conf
与default.conf
分别复制到/home/kali/nginx
和/home/kali/nginx/conf
docker cp 902f:/etc/nginx/nginx.conf ./
docker cp 902f:/etc/nginx/conf.d/default.conf ./conf/
注意容器ID不要填错,然后停止并删除这个容器,重新新建一个容器
docker stop 902f //停止容器
docker rm 902f //删除容器
新建容器,注意以下冒号前面的路径是刚才自己在本地新建的路径,冒号后面的是容器内的路径
docker run --name nginx-config -p 80:80 -v /home/kali/nginx/nginx.conf:/etc/nginx/nginx.conf -v /home/kali/nginx/logs:/var/log/nginx -v /home/kali/nginx/html:/usr/share/nginx/html -v /home/kali/nginx/conf:/etc/nginx/conf.d \
--privileged=true -d 605c //这里的605c是镜像ID
-v:挂载目录,-v[宿主机路径]:[容器内路径]
完成后本机的nginx路径下会有如下文件,说明成功
![](https://img2023.cnblogs.com/blog/3159215/202304/3159215-20230402233108412-2059938710.png)
更改nginx文件夹的权限chmod -R 777 ./nginx
在/home/kali/nginx/html
目录下添加网页即可访问,到此Nginx的安装已经结束,删除此容器
docker stop 916
docker rm 916
二、 安装PHP
1. 拉取PHP镜像
docker pull php:7.4-fpm //拉取PHP镜像
docker images //查看本地镜像
![](https://img2023.cnblogs.com/blog/3159215/202304/3159215-20230403103722506-1064873012.png)
记下PHP的IMAGE ID是 854
2. 创建PHP容器同时挂载文件
docker run --name php-test -v /home/kali/nginx/html:/www -p 9000:9000 -d 854
--name:给容器起名为php-test
-v :挂载目录
docker run --name nginx-test -p 80:80 -v /home/kali/nginx/nginx.conf:/etc/nginx/nginx.conf -v /home/kali/nginx/logs:/var/log/nginx -v /home/kali/nginx/html:/usr/share/nginx/html -v /home/kali/nginx/conf:/etc/nginx/conf.d \
--privileged=true --link php-test:php -d 605c //这里的605c是镜像ID
--link:把 php-test 容器的网络并入 nginx,并通过修改 nginx 的 /etc/hosts,把域名 php 映射成 127.0.0.1,让 nginx 通过 php:9000 访问 php-test
修改/home/kali/nginx/conf/default.conf
为以下内容
server {
listen 80;
server_name localhost;
location / {
root /www;
index index.html index.htm index.php;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /www;
}
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /www$fastcgi_script_name;
include fastcgi_params;
}
}
用docker restart [container_id]
重启容器,在html文件夹中添加php文件访问即可