设置 PHP-FPM 和 Nginx Docker 容器
本文将讨论在Docker上进行本地开发时如何设置PHP、php-FPM和Nginx容器。要点:在命令行上构建和运行容器。Docker文件及其用途。容器如何交互。确保您的设备上安装了Docker程序和gitBash。设置PHPCLI容器我们将创建目录C:/delft/docker-php/app,我们将在其中存储我们的源代码:mkdir-p"C:/delft/docker-php/app"在我们的教程中,我们将使用官方PHP图像。我们运行下面的代码;dockerrun-d--namedo
本文将讨论在 Docker 上进行本地开发时如何设置 PHP、php-FPM 和 Nginx 容器。
要点:
- 在命令行上构建和运行容器。
- Docker 文件及其用途。
- 容器如何交互。
确保您的设备上安装了 Docker 程序和 git Bash。
设置 PHP CLI 容器
我们将创建目录 C:/delft/docker-php/app,我们将在其中存储我们的源代码:
mkdir -p "C:/delft/docker-php/app"
在我们的教程中,我们将使用官方 PHP 图像。 我们运行下面的代码;
docker run -d --name docker-php -v "C:/delft/docker-php/app":/var/www php:7.0-cli
这意味着,
- docker run - 这将运行一个容器。
- -d - 它将在后台运行(分离)。
- --name docker-php - 这将指定 docker-php。
- -v "C:/delft/docker-php/app":/var/www - 这会将 windows 主机上的目录 C:/delft/docker-php/app 与容器中的 /var/www 同步。
- php:7.0-cli - 这将使用此图像来构建容器。
输出结果如下:
$ docker run -d --name docker-php -v "C:/delft/docker-php/app":/var/www php:7.0-cli
Unable to find image 'php:7.0-cli' locally
因为我们的机器没有镜像,Docker 将尝试从官方注册表中获取镜像。
我们运行 docker ps -a 命令来查看容器是否正在运行。
您会注意到容器在初始化后立即停止运行。 我们需要将 -i 参数添加到 docker run 命令。
在再次运行 docker run 命令之前,请运行以下命令。
$ docker rm docker-php
上面的命令删除了我们的第一个 docker-php,因为我们不能再次使用它。 我们现在可以使用 -i 标志运行 docker run 命令。
docker run -di --name docker-php -v "C:/delft/docker-php/app":/var/www php:7.0-cli
7b3024a542a2d25fd36cef96f4ea689ec7ebb758818758300097a7be3ad2c2f6
运行 docker ps -a 命令检查容器是否正在运行。
要登录,请运行以下命令;
winpty docker exec -it docker-php bash
使用 PHP-FPM 和 NGINX 设置 WEB 堆栈
现在让我们讨论如何设置 PHP-FPM 和 Nginx 容器。
设置 NGINX
我们首先获取一个服务器,该服务器将充当运行官方 Nginx 映像的容器。 我们将创建一个 docker-compose.yml 来运行我们最新的 Nginx 图像。 我们将使用端口 80 和 8080。
web:
image: nginx:latest
ports:
- "8080:80"
然后我们运行 docker-compose up 命令。
输出:

让我们将 docker-compose.yml 文件挂载到本地存储库。 我们将使用我们的 docker-compose.yml 文件所在的文件夹 jiyik。
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./jiyik:/jiyik
此时,Nginx 并不知道我们的文件夹存在。 我们将使用以下 site.conf 文件来解决此问题。
server {
index index.html;
server_name php-docker.local;
error_log/var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /delft;
}
我们需要激活设置。 让我们再修改 docker-compose.yml 文件。
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./jiyik:/jiyik
- ./site.conf:/etc/nginx/conf.d/site.conf
我们现在可以将 index.html 添加到我们的 jiyik 文件夹并运行下面的代码;
docker-compose up
我们的 Nginx 应该已经启动并运行了。
添加 PHP-FPM
下一步是获取官方的 PHP7-FPM,它将链接到我们的 Nginx 容器。 更新后的 docker-compose.yml 文件应如下所示。
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./jiyik:/jiyik
- ./site.conf:/etc/nginx/conf.d/site.conf
links:
- php
php:
image: php:7-fpm
我们现在将配置 Nginx 容器以使用 PHP-FPM 容器解释 PHP 文件。 我们更新后的 site.conf 文件将读取,
server {
index index.php index.html;
server_name php-docker.local;
error_log/var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /delft;
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass php:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
让我们测试程序。 首先,我们将我们的 index.html 文件重命名为 index.php 并将内容更改为以下内容。
echo phpinfo();
在运行 docker-compose up 命令之前,我们必须将 jiyik 文件夹挂载到我们的 PHP 容器中。 我们的 docker-compose.yml 文件的最终迭代将读取,
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./jiyik:/jiyik
- ./site.conf:/etc/nginx/conf.d/site.conf
links:
- php
php:
image: php:7-fpm
volumes:
- ./jiyik:/jiyik
运行 docker-compose up 命令会产生下图。

Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
















