一、安装Nginx及PHP7.4
1、 安装Nginx
这里我们拉取官方的最新版本的镜像:
docker pull nginx:latest
2、安装PHP7.4
这里我们拉取官方的最新版本的镜像:
docker pull php:7.4-fpm
3、使用以下命令来查看是否已安装了 nginx和php:
docker images
二、Nginx + PHP 部署
1、启动 PHP容器
docker run --name php7.4-fpm -v /Users/lishuo/Code/docker/php:/www -d php:7.4-fpm
命令说明:
- —name php7.4-fpm : 将容器命名为 php7.4-fpm
- -d 守护进程 后台运行
- -v /Users/lishuo/Code/docker/php:/www : 将主机中项目的目录/Users/lishuo/Code/docker/php(这个目录是你本地自己的项目目录,需要换成你自己的,也可以用D:…) 挂载到容器的 /www(这个是docker容器内php的路径,不需要动)
查看容器是否启动成功
在自己本地/Users/lishuo/Code/docker/php(我的是mac系统,你的可能是D盘某个目录下)下创建ThinkPHP6项目
composer create-project topthink/think tp6.com
查看一下本地项目是否创建成功
2、配置Nginx域名文件
在本地创建目录用来存放nginx的域名文件
- /Users/lishuo/Code/docker/nginx/conf 这个是我mac电脑的路径,你换成自己的windows电脑的,比如 D: 盘下
在该目录下添加 tp6.com.conf 文件,内容如下:
server {
listen 80;
server_name tp6.com;
location / {
root /usr/share/nginx/html/tp6.com/public;
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$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /www/tp6.com/public/$fastcgi_script_name;
include fastcgi_params;
}
}
配置文件说明:
- 第3行 代表你的域名
- 第6行 /usr/share/nginx/html/tp6.com/public 代表Nginx容器内项目路径
- 第18行 /www/tp6.com/public/$fastcgi_script_name 代表你php容器内项目路径
三、启动Nginx
docker run --name php-nginx -p 80:80 -d \
-v /Users/lishuo/Code/docker/php:/usr/share/nginx/html:ro \
-v /Users/lishuo/Code/docker/nginx/conf:/etc/nginx/conf.d:ro \
--link php7.4-fpm:php \
nginx
配置文件说明:
- -p 80:80: 端口映射,把 nginx 中的 80 映射到本地的 80 端口
- /Users/lishuo/Code/docker/php(我的是mac你的有可能事D盘某目录): 是本地 nginx 文件的存储目录,/usr/share/nginx/html 是容器内 html 文件的存储目录
- /Users/lishuo/Code/docker/nginx/conf(我的是mac你的有可能事D盘某目录): 是本地 nginx 配置文件的存储目录,/etc/nginx/conf.d 是容器内 nginx 配置文件的存储目录。
- —link php7.4-fpm:php: 把 php7.4-fpm 的网络并入 nginx,并通过修改 nginx 的 /etc/hosts,把域名 php 映射成 127.0.0.1,让 nginx 通过 php:9000 访问 php-fpm
查看nginx容器是否启动成功
四、修改本地host文件
如上是修改的mac的host文件路径在/etc/hosts下,如果是windows则在C:\Windows\System32\drivers\etc下
五、测试是否成功
看到如上效果则是配置成功