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相关推荐

  1. Docker系列 五.Docker容器数据卷

    五.Docker容器数据卷 环境&工具: 阿里云轻量级服务器.CentOS 7系统.FinalShell(其他连接客户端也可以) 是什么 docker的理念将运行的环境打包形成容器运行,运行可 ...

  2. Docker系列(二十三)——Docker实例五Docker安装MongoDB实例

    < Docker实例三Docker安装MongoDB实例 > 前言 在前面一篇文章种,完成了 < Docker安装MySQL实例 >,本篇将继续镜像安装教程,并完成Docker ...

  3. Docker系列一 ~docker的安装

    Docker系列一 docker安装 依照centos为例,Docker 官方建议要 CentOS7.0 及以上系统版本,在运行CentOS 6.5及以后版本时,需要内核版本>=2.6.32-4 ...

  4. Docker系列 七. Docker 安装Jenkins

    Docker系列 七. Docker 安装Jenkins Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集 ...

  5. Docker系列四~docker安装mysql

    Docker系列四 docker安装mysql 搜索mysql版本 [root@localhost conf.d]# docker search mysql INDEX NAME DESCRIPTIO ...

  6. Docker系列三~docker安装nginx

    Docker系列三 docker安装nginx 搜索nginx版本 docker search nginx 拉取nginx最新版本镜像 docker pull nginx:latest 查看本地镜像 ...

  7. Docker系列之MySQL安装教程

    Docker系列之MySQL安装教程 有了前面的基础教程Docker系列之常用命令操作手册之后,本博客记录一篇mysql的安装教程 mysql镜像查询命令 docker search mysql 几个 ...

  8. Docker系列之RabbitMQ安装部署教程

    Docker系列之RabbitMQ安装部署教程 因为学习RabbitMQ需要,需要安装RabbitMQ,网上找资料,RabbitMQ官方提供了window版.Linux版.Docker版的管理页面,为 ...

  9. Docker系列 四.Docker部署SpringBoot

    四.Docker部署SpringBoot 环境&工具: 阿里云轻量级服务器.CentOS 7系统.FinalShell(其他连接客户端也可以).IDEA 1. 创建springboot项目 这 ...

最新文章

  1. php SQLite mysql_PHP实现的sqlite数据库连接类
  2. customplot设置单个点的颜色_[原创]单个超大型TB级imaris的ims文件的Surface手绘及Mask提速新方法...
  3. 『设计模式』小伙你的穿搭很潮!--装饰者模式
  4. java程序弊端_面向对象编程的弊端是什么?
  5. 反锐化掩膜_光电图像处理 | 空域锐化滤波
  6. 构造函数后面的冒号后初始化列表
  7. 如何用Linux搭建家庭云服务,使用ownCloud在Linux安装你的个人云服务 私有云的搭建...
  8. 开发中很实用的10个效果
  9. NetCore控制台实现自定义CommandLine功能
  10. java js页面提示报警声音
  11. 请问最早的计算机语言是什么,最早的计算机语言是什么?
  12. 硬件入门之PCB设计注意事项
  13. java实现微信企业号API服务端调用封装
  14. mysql密码过期批处理_批处理脚本一键重置mysql的root密码
  15. fmt/core.h:1711:3: error: static assertion failed: Cannot format an argument.解决方案
  16. chrome cookie存在什么地方_谷歌浏览器产生的cookie缓存怎么查看呢?Cookie的具体内容在哪里...
  17. C语言递归(pta递归求简单交错幂级数的部分和)
  18. Proteus中小圆圈引脚连线
  19. The Tomcat connector configured to listen on port 8082 failed to start
  20. Worktile:突围,企业协作办公的主旋律

热门文章

  1. spark任务提交流程源码分析
  2. Avoided redundant navigation to current location
  3. STL(一)——栈及其应用
  4. 文字旋转_技术宅大白教你用软件做抖音爆火的文字旋转视频
  5. python做带数据库的登录界面_Python3 Tkinkter + SQLite实现登录和注册界面
  6. 每日一道算法题--leetcode 746--使用最小花费爬楼梯--python
  7. 利用Python定时给女友微信发送今日天气情况,异地恋维护感情神器
  8. D-Wave的量子计算机,到底能不能进行量子计算?
  9. elasticsearch5.0.0中索引和文档接口的变化
  10. Python 学习笔记9(装饰器,decorator)