TIP
# 本篇:windows本地使用docker-compose构建nginx+php访问thinkphp5 本篇文章CSDN地址 (opens new window)
前言:继上一篇windows本地使用docker+nginx+mysql部署thinkphp5后,本期使用docker-compose搭建环境访问thinkphp5程序。
# 第一步:准备工作
检查本地是否安装docker-compose(cmd终端输入docker-compose -v 检测,安装Docker Desktop默认是有的)。 确保您已了解docker-compose基本语法。
# 第二步:创建docker-compose.yml文件
如您不了解docker-compose语法也没关系,为了避免废话。直接贴docker-compose.yml内容
#docker-compose 版本
version: '3'
#创建服务,可理解为创建容器。
services:
#拉取nginx镜像
nginx:
#镜像版本
image: nginx:latest
#暴露的端口
ports:
- "8001:80"
#挂载宿主机文件(宿主机文件:容器内文件)
volumes:
- ./default.conf:/etc/nginx/conf.d/default.conf
- ./html:/var/www/html
#使用depends_on 指定服务之间的依赖关系
depends_on:
- php
#服务所依赖网络
networks:
- app-network
#拉取php-fpm镜像
php:
image: php:7.4-fpm
volumes:
- ./html:/var/www/html
networks:
- app-network
#定义网络
networks:
#网络名称
app-network:
#网络驱动类型
driver: bridge
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# 第三步:启动docker-compose构建服务
1、nginx配置文件default.conf内容如下:
server {
listen 80;
index index.php;
server_name localhost;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /var/www/html/app/public;#指向容器内部thinkphp程序的public目录
# location / {
# try_files $uri $uri/ /index.php?$query_string;
# }
#隐藏入口文件index.php
location / {
if (!-e $request_filename){
rewrite ^(.*)$ /index.php?s=$1 last; break;
}
}
location ~ \.php$ {
fastcgi_pass php:9000;#容器名php,在Docker容器中,如果你使用PHP-FPM镜像,默认情况下PHP-FPM会监听9000端口
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
include fastcgi_params;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2、本地文件目录如下:
3、启动构建:启动docker-compose.yml 在docker-compose.yml文件所在目录启动cmd终端输入docker-compose up;
启动成功结果如下:-d表示后台运行,不输出任何结果到终端。
查看Docker Desktop,结果如下就成功搭建了。
访问localhost:8001查看效果:
是不是很熟悉 ,哈哈哈!
结语: 使用docker-compose配置很好玩,上述都配置好了之后,就可以愉快的使用thinkphp5写业务了。