千家信息网

docker如何安装php-fpm服务/扩展/配置

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要为大家展示了docker如何安装php-fpm服务/扩展/配置,内容简而易懂,希望大家可以学习一下,学习完之后肯定会有收获的,下面让小编带大家一起来看看吧。在 mac 上用 brew 装
千家信息网最后更新 2026年11月02日docker如何安装php-fpm服务/扩展/配置

这篇文章主要为大家展示了docker如何安装php-fpm服务/扩展/配置,内容简而易懂,希望大家可以学习一下,学习完之后肯定会有收获的,下面让小编带大家一起来看看吧。

在 mac 上用 brew 装 php56 时,因为 openssl 是 1.1 版本而导致各种 google 都搞不定的错误,太折腾了,现在用 docker 创建一个 php56-fpm 服务容器,nginx 直装在宿主机上。

PHP DockerHub 主页

创建容器

# 创建容器docker run -d \--name php56-fpm \-p 9056:9000 \-v /home/wwwroot:/var/www/html--privileged=truephp:5.6-fpm

注意:

/var/www/html 是 php docker 镜像的工作目录。

-v /home/wwwroot:/var/www/html 的作用是将宿主机的站点目录挂载到容器上。比如 /home/wwwroot/siteA,在容器中的访问位置是 /var/www/html/siteA。

nignx 转发 php 请求时,会将执行的脚本名 SCRIPT_NAME 和脚本文件名 SCRIPT_FILENAME 转发给 fpm,而后 fpm 去读取脚本执行。

在使用 fpm 容器时,需要注意 nginx 转发的 SCRIPT_FILENAME 是否是 fpm 容器中的有效站点路径,如果 nginx 的 root 并不能直接映射至 fpm 容器的站点 root,我们需要在 php location 中重新定义为 fpm 容器的站点 root。这样 fpm 才能正确的读取到脚本。

即宿主机上的 /home/wwwroot/siteA/public/index.php 要转为 /var/www/html/siteA/public/index.php 发送给 fpm 容器,否则会报 File not found 的错误。

所以 nginx 配置 server 时要注意如下的卷路径转换:

server { listen 8056; .... # 宿主机的站点根目录 root /home/wwwroot/siteA/public;  location ~* (^[/]*.php)[/|$] { # 容器中的站点根目录 root /var/www/html/siteA/public; pass_proxy: 127.0.0.1:9056; include fastcgi.conf; }}

不过一般情况下大家都是 docker nginx + docker php-fpm,两个容器都统一映射了站点目录,就不会有这个问题了。这里的 nginx 是直接装在宿主机上才导致 nginx 转发 php 请求时需要重新定义下站点的根目录。

登陆容器

# 查看容器是否运行docker ps# 登陆容器docker exec -it php56-fpm /bin/bash

php 的 docker 镜像是基于 ubuntu 我们可以使用 apt-get 安装需要的工具,比如 vim/vi lrzsz net-tools 之类的。

# 在使用 apt-get 安装一些工具前,需要 update 更新一下源# 否则会 apt-get E: Unable to locate packageapt-get updateapt-get install vim

安装 php/pecl 扩展

安装 php 扩展

即 php 官方扩展,比如 shomp 这种自带但默认不开启的扩展。

# 查看自带了那些扩展cd /usr/local/php/ext && ls -l# 安装扩展dcoker-php-ext-install shmop

安装 pecl 扩展

容器中是有安装 pecl的,所以直接使用 pecl 安装即可,注意扩展对 php 版本的支持即可。

docker-php-ext-enable的主要用途是生成扩展相应的配置文件到 /usr/local/etc/php/conf.d/docker-php-ext-{extName}.ini 方便 php 加载扩展。

# igbinary php5.6 最高版本是 2.0.8pecl install igbinary-2.0.8docker-php-ext-enable igbinary# phpredis php5.6 最高版本是 4.3.0pecl install redis-4.3.0docker-php-ext-enable redis# swoole php5.6 最高版本是 2.0.11pcel install swoole-2.0.11docker-php-ext-enable swoole

php/php-fpm 配置

/usr/local/etc 是 php 容器的配置目录,里面自带了 php 及 php-fpm 的配置文件,配置目录结构如下:

root@aa739592b579:/usr/local# tree etc/ etc/|-- pear.conf|-- php # php 配置目录| |-- conf.d # php 扩展配置| | |-- docker-php-ext-shmop.ini| |-- php.ini # cp 的 php.ini-development/production| |-- php.ini-development| |-- php.ini-production|-- php-fpm.conf # php-fpm 的配置 自带的主要是引入 php-fpm.d|-- php-fpm.conf.default # php-fpm 配置本体 同 php-fpm.d/www.conf 一致|-- php-fpm.d # php-fpm 的扩展配置 |-- docker.conf |-- www.conf # php-fpm 配置本体 模式啊 max/min children 啊都在这里 |-- zz-docker.conf

你可映射宿主机的配置目录到容器的 /usr/local/etc,但要注意宿主机上的配置目录与容器现有的要保持一致,或者直接在容器里编辑配置文件。按 docker 的理念我们应该在宿主机上维护一份配置文件映射到容器的配置目录上,这样才能发挥出 docker 容器的复用性。

映射宿主机的 php 配置文件到容器

-v /opt/docker/conf/php/php.ini:/usr/local/etc/php/php.ini-v /opt/docker/conf/php/php-fpm.ini:/usr/local/etc/php-fpm.d/www/conf

常见问题

1、File not found
nginx 指定的 站点根目录 无法直接映射给 fpm 容器,在 location 中重新指定 fpm 容器的 站点根目录。
2、apt-get E: Unable to locate package
执行 apt-get update 刷新一下源即可。
3、容器的相关约定
工作目录:/var/www/html 建议将宿主机的站点目录映射至此目录
配置目录:/usr/local/etc 注意配置目录结构
php 扩展目录:/usr/local/php/ext 可以查看 php 自带的扩展包 使用 docker-php-ext-install 安装更方便

以上就是关于docker如何安装php-fpm服务/扩展/配置的内容,如果你们有学习到知识或者技能,可以把它分享出去让更多的人看到。

容器 配置 目录 站点 宿主 文件 宿主机 根目录 版本 脚本 服务 最高 学习 一致 内容 工具 本体 结构 路径 错误 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广州为想互联网科技有限公司 科技互联网项目 互联网金融 科技 百单互联网科技有限公司 时间互联网络科技 互联网巨头投资的硬核科技 互联网公司科技股 花神(南京)互联网科技有限公司 互联网科技大奖都有哪些公司 河南住房之家互联网科技 用友工业互联网科技发展 科技赋能视角下互联网保险发展 工业互联网展湾科技股份有限公司 工业互联网山东科技大学 互联网公司高科技产品 美国互联网科技公司 张召忠谈中国互联网科技 上海创道互联网络科技有限公司 互联网科技年终奖 神州科技互联网有限公司 深圳市人人互联网科技有限公司 金诺互联网科技 科技服务与互联网 赫美联合互联网科技 青海省互联网新科技 剑昆互联网络科技有限公司临桂 互联网金融中的现代科技 河南猎农互联网科技有限公司 燊美集互联网科技有限公司 互联网科技品牌
0