docker使用

搭建 nginx + php-fpm

1
2
3
4
5
6
7
8
9
10
11
12
13
# 获取 php-fpm8.2 配置文件(23d4f3cf4092 为先启动的一个 php-fpm 容器)
docker cp 23d4f3cf4092:/usr/local/etc/php/ ./
docker cp 23d4f3cf4092:/usr/local/etc/php-fpm.conf ./
docker cp 23d4f3cf4092:/usr/local/etc/php-fpm.d ./

# 运行 php-fpm8.2容器
docker run --name php82-fpm --network dnmp -d -p 9000:9000 -v /mnt/c/Users/hyuii/code/docker/lnmp/php/php-fpm.d:/usr/local/etc/php-fpm.d -v /mnt/c/Users/hyuii/code/docker/lnmp/html:/var/www/html php:8.2-fpm

# 获取 nginx 配置文件(eca00766479f 为先启动的一个 nginx 容器)
docker cp eca00766479f:/etc/nginx/conf.d ./

# 运行 nginx
docker run -d -p 80:80 -v /mnt/c/Users/hyuii/code/docker/lnmp/nginx/conf.d:/etc/nginx/conf.d -v /mnt/c/Users/hyuii/code/docker/lnmp/html:/var/www/html --network dnmp nginx:1.26.0

nginx 配置文件示例

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
server {
listen 80;
listen [::]:80;
server_name localhost;

#access_log /var/log/nginx/host.access.log main;

location / {
root /var/www/html;
index index.html index.htm index.php;
}

# 容器网络中,使用 php82-fpm 容器名来访问 php-fpm
location ~ \.php$ {
fastcgi_pass php82-fpm:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
include fastcgi_params;
}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}

访问 php 文件 404

1
2
# 需要把 nginx server 块配置文件的 SCRIPT_FILENAME 值加上对应的 php-fpm 中的项目目录
fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;

php 安装 redis 扩展

1
2
3
4
5
pecl install redis-5.3.7 
docker-php-ext-enable redis

# 重启 php-fpm
docker restart 容器id

docker-compose 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
services:
nginx:
image: "nginx:1.26.0"
ports:
- "80:80"
volumes:
- /mnt/c/Users/hyuii/code/docker/lnmp/nginx/conf.d:/etc/nginx/conf.d
- /mnt/c/Users/hyuii/code/docker/lnmp/html:/var/www/html
php82-fpm:
image: "php:8.2-fpm"
ports:
- "9000:9000"
volumes:
- /mnt/c/Users/hyuii/code/docker/lnmp/php/php-fpm.d:/usr/local/etc/php-fpm.d
- /mnt/c/Users/hyuii/code/docker/lnmp/html:/var/www/html