Docker系列五~docker安装php-fpm
Docker系列五
docker安装php-fpm
访问PHP镜像库地址: https://hub.docker.com/_/php?tab=tags
选择合适的版本
php-fpm镜像主要是提供php-fpm服务,需要挂载项目目录到容器里面,就是需要映射项目文件件到容器,以及修改部分配置,可以映射php.ini配置文件也可以不映射,因为修改不多。随意就不做映射了,只映射项目目录即www目录
常用版本
php:5.6-fpm
php:7.2-fpm
php:fpm 默认tag是latest最新版本
docker pull php:7.2-fpm
docker images
docker inspect php72-fpm:latest
PHP版本为 7.4.6
本例使用php-fpm:7.2
下载php:7.2-fpm
docker pull php:7.2-fpm
安装以及查看安装容器的信息
docker ps -a
docker losg xxxxx
docker inspect php72-fpm:latest
创建本地项目目录
mkdir -p /data/nginx/html/
创建php-fpm容器,接入网桥等等
docker run -d --network nginx_bridge --restart always --privileged=true --name php72 -v /data/nginx/html:/var/www/html php:7.2-fpm
安装完成需要安装一些自己需要的扩展,包括一些比较核心的拓展,比如三个拓展gd(一般用于验证等)、mysql_pdo、redis客户端,可能是为了镜像大小问题,很多拓展没有被编译进去,需要自己安装
使用docker-php-ext-install安装工具安装扩展
find / -name docker-php-ext-install
#cd 到所在文件夹,安装一下扩展
./docker-php-ext-install pdo_mysql mysqli sockets gettext opcache
查看gd信息
php --ri gd
#查看扩展信息
php --ri gdgdGD Support => enabledGD Version => bundled (2.1.0 compatible)GIF Read Support => enabledGIF Create Support => enabledPNG Support => enabledlibPNG Version => 1.6.36WBMP Support => enabledXBM Support => enabledDirective => Local Value => Master Valuegd.jpeg_ignore_warning => 1 => 1#发现只有gif与png,没有jpeg也可以新建一个info.php 在文件中查看相关扩展信息
安装gd库
#进入容器
docker exec -it xxxx /bin/bash
#更新apt-get
apt-get update
#安装依赖
apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libpng-dev#配置参数
./docker-php-ext-configure gd --with-jpeg-dir=/usr/include/ --with-freetype-dir=/usr/include/
#如果php74-fpm镜像就报错:
configure: error: unrecognized options: --with-jpeg-dir, --with-freetype-dir#查看帮助
./docker-php-ext-configure gd --help
#原来它的写法变了,修改后
./docker-php-ext-configure gd --with-jpeg=/usr/include/ --with-freetype=/usr/include/#重新编译安装就可以了
./docker-php-ext-install gd
php --ri gd#安装redis扩展
pecl install redis###################################################################以下来源网络整理
pecl install redis#出错的话pecl install igbinary
#configure: error: Please reinstall the libzstd distribution
#安装 libzstd
#然后php.ini中添加 extension=igbinary.so
docker-php-ext-enable redis // 修改php.ini文件pecl install swoole
docker-php-ext-enable swoole3、当然也可以自己下载安装包,采用和Linux一样的方式编译安装
在 /usr/local/bin 目录下有 phpize
然后使用 docker-php-ext-enable 工具修改php.ini最后的最后,基本上每个扩展都有其对应的配置项,但是你会发现在php.ini中找不到它们,因为它们都内置了默认配置,使用 php --ri xxx
可以查看扩展的配置,如果要修改的话,可以改 php.ini 也可以改 /usr/local/etc/php/conf.d 下面对应的文件,比如我刚安装了 yac
扩展,并 enabled 了它,现在来修改配置:
cd /usr/local/etc/php/conf.d
vi docker-php-ext-yac.ini
增加 yac.enable_cli = 1
php --ri yac安装vim程序,修改php.ini中的时区
vi /usr/local/etc/php/php.ini
date.timezone = Asia/Shanghai操作完这一波之后有必要备份一下容器,已被后续使用。
docker commit -p php-fpm php-fpm-bak
docker tag php-fpm-bak:latest php-fpm-bak:v1
docker imagesexit 退出容器重启容器
docker restart php-fpm当php去连接在本机同样使用host网络创建的mysql容器时,php代码中应该使用127.0.0.1连接mysql而不是localhost,否
则会报错 Connection failed: SQLSTATE[HY000] [2002] No such file or directory关于目录的挂载
最近发现一个小问题,我设置的php72-fpm容器开机自动重启,并挂载了虚拟机的一个目录,而虚拟机挂载的是本机的一个目录;昨天难得重启一次电脑,然后就是开启虚拟机,php72-fpm已经自动启动了,但是开发的时候报 404 ,我就纳闷了,于是开始排查。
docker logs php72-fpm
发现是php72-fpm报404,而不是nginx于是进入容器查看 /www 发现是空的。于是 docker restart php72-fpm 就好了。
可能的原因,我是用的vagrant启动的虚拟机,也是在vagrant配置的共享文件夹,所以,php72-fpm在虚拟机启动时就启动了,而此时虚拟机还没挂载好共享文件夹,因为虚拟机的挂载是由vagrant来完成的,所以设置容器开机自启动还是要看你的场景。
创建php-fpm容器,映射文件接入网桥
docker run -d --network nginx_bridge --restart always --privileged=true --name php72 -v /data/nginx/html:/var/www/html php:7.2-fpm
查看php-fpm容器
docker ps -a
Docker系列五~docker安装php-fpm相关推荐
- Docker系列 五.Docker容器数据卷
五.Docker容器数据卷 环境&工具: 阿里云轻量级服务器.CentOS 7系统.FinalShell(其他连接客户端也可以) 是什么 docker的理念将运行的环境打包形成容器运行,运行可 ...
- Docker系列(二十三)——Docker实例五Docker安装MongoDB实例
< Docker实例三Docker安装MongoDB实例 > 前言 在前面一篇文章种,完成了 < Docker安装MySQL实例 >,本篇将继续镜像安装教程,并完成Docker ...
- Docker系列一 ~docker的安装
Docker系列一 docker安装 依照centos为例,Docker 官方建议要 CentOS7.0 及以上系统版本,在运行CentOS 6.5及以后版本时,需要内核版本>=2.6.32-4 ...
- Docker系列 七. Docker 安装Jenkins
Docker系列 七. Docker 安装Jenkins Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集 ...
- Docker系列四~docker安装mysql
Docker系列四 docker安装mysql 搜索mysql版本 [root@localhost conf.d]# docker search mysql INDEX NAME DESCRIPTIO ...
- Docker系列三~docker安装nginx
Docker系列三 docker安装nginx 搜索nginx版本 docker search nginx 拉取nginx最新版本镜像 docker pull nginx:latest 查看本地镜像 ...
- Docker系列之MySQL安装教程
Docker系列之MySQL安装教程 有了前面的基础教程Docker系列之常用命令操作手册之后,本博客记录一篇mysql的安装教程 mysql镜像查询命令 docker search mysql 几个 ...
- Docker系列之RabbitMQ安装部署教程
Docker系列之RabbitMQ安装部署教程 因为学习RabbitMQ需要,需要安装RabbitMQ,网上找资料,RabbitMQ官方提供了window版.Linux版.Docker版的管理页面,为 ...
- Docker系列 四.Docker部署SpringBoot
四.Docker部署SpringBoot 环境&工具: 阿里云轻量级服务器.CentOS 7系统.FinalShell(其他连接客户端也可以).IDEA 1. 创建springboot项目 这 ...
最新文章
- php SQLite mysql_PHP实现的sqlite数据库连接类
- customplot设置单个点的颜色_[原创]单个超大型TB级imaris的ims文件的Surface手绘及Mask提速新方法...
- 『设计模式』小伙你的穿搭很潮!--装饰者模式
- java程序弊端_面向对象编程的弊端是什么?
- 反锐化掩膜_光电图像处理 | 空域锐化滤波
- 构造函数后面的冒号后初始化列表
- 如何用Linux搭建家庭云服务,使用ownCloud在Linux安装你的个人云服务 私有云的搭建...
- 开发中很实用的10个效果
- NetCore控制台实现自定义CommandLine功能
- java js页面提示报警声音
- 请问最早的计算机语言是什么,最早的计算机语言是什么?
- 硬件入门之PCB设计注意事项
- java实现微信企业号API服务端调用封装
- mysql密码过期批处理_批处理脚本一键重置mysql的root密码
- fmt/core.h:1711:3: error: static assertion failed: Cannot format an argument.解决方案
- chrome cookie存在什么地方_谷歌浏览器产生的cookie缓存怎么查看呢?Cookie的具体内容在哪里...
- C语言递归(pta递归求简单交错幂级数的部分和)
- Proteus中小圆圈引脚连线
- The Tomcat connector configured to listen on port 8082 failed to start
- Worktile:突围,企业协作办公的主旋律
热门文章
- spark任务提交流程源码分析
- Avoided redundant navigation to current location
- STL(一)——栈及其应用
- 文字旋转_技术宅大白教你用软件做抖音爆火的文字旋转视频
- python做带数据库的登录界面_Python3 Tkinkter + SQLite实现登录和注册界面
- 每日一道算法题--leetcode 746--使用最小花费爬楼梯--python
- 利用Python定时给女友微信发送今日天气情况,异地恋维护感情神器
- D-Wave的量子计算机,到底能不能进行量子计算?
- elasticsearch5.0.0中索引和文档接口的变化
- Python 学习笔记9(装饰器,decorator)