Docker基于官方镜像构建PHP+Nginx环境

拉取 PHP 镜像

sudo docker pull php:7.4-fpm

新建容器并运行

sudo docker run --rm -it --name containerName php:7.4-fpm /bin/bash

在容器里安装扩展

docker-php-ext-install mysqli 

安装zip unzip

apt-get install zip unzip

拉取最新 Nginx 镜像

sudo docker pull nginx

运行 Nginx

sudo docker run  --rm -it --name nginx-test -p 8080:80 -d nginx

8080端口为宿主机端口

80端口为docker里nginx映射出来的

所以访问地址为http://宿主机ip:8080

项目文件结构

└--nginx
|   └--conf.d
|	    └--default.conf
└--www

default.conf 文件内容:

server {
    listen       80;
    listen [::]:80;
    server_name  localhost;

    location / {
        root   /usr/share/nginx/html;
        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$ {
        root /usr/share/nginx/html;
        fastcgi_pass   php:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

关联宿主机目录并启动 php

sudo docker run --rm -d \
--name myphp \
-v "$PWD"/www:/usr/share/nginx/html \
--network my_net --network-alias php \
php:7.4-fpm

关联宿主机目录并启动 nginx

sudo docker run --rm -d \
--name mynginx \
--network my_net --network-alias nginx \
-v "$PWD"/www:/usr/share/nginx/html \
-v "$PWD"/nginx/conf.d:/etc/nginx/conf.d \
-p 8080:80 \
nginx