准备docker环境

此处略过

拉下最新镜像

docker pull nginx
docker pull php:8.2-fpm

创建宿主机目录用作挂载

# nginx配置目录
mkdir -p /www/server/nginx/conf.d

# php配置目录
mkdir -p /www/server/php82

# 站点目录
mkdir -p /www/wwwroot/

# nginx日志目录
mkdir -p /www/wwwlogs/

创建docker网络

docker network create webserver

创建临时的php容器,将配置文件cp到宿主机

docker run --name temp-php-container -d php:8.2-fpm
docker cp temp-php-container:/usr/local/etc/php /www/server/php82
docker rm -f temp-php-container

创建php容器并启动

docker run -d --name php82-fpm --network webserver \
    -v /www/server/php82:/usr/local/etc/php \
    -v /www/wwwroot:/usr/share/nginx/html \
    php:8.2-fpm

创建临时的nginx容器,将配置文件cp到宿主机

docker run --name temp-nginx-container -d nginx
docker cp temp-nginx-container:/etc/nginx/conf.d /www/server/nginx/conf.d
docker cp temp-nginx-container:/etc/nginx/nginx.conf /www/server/nginx/nginx.conf

docker rm -f temp-nginx-container

创建nginx容器并启动

docker run -d --name nginx --network webserver \
    -p 80:80 \
    -v /www/server/nginx/nginx.conf:/etc/nginx/nginx.conf \
    -v /www/server/nginx/conf.d:/etc/nginx/conf.d \
    -v /www/wwwroot:/usr/share/nginx/html \
    nginx

创建nginx默认站点配置

vim /www/server/nginx/conf.d/default.conf

server {
    listen 80;
    server_name localhost;

    root /usr/share/nginx/html/default;  # 容器内的路径
    index index.php index.html;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass php82-fpm:9000;  # PHP-FPM 容器的名称和端口
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

创建站点文件

vim /www/wwwroot/default/phpinfo.php

<?php

phpinfo();

重启nginx容器

docker restart nginx

访问浏览器

http://localhost/phpinfo.php