演示docker-php-source , docker-php-ext-install ,docker-php-enable-docker-configure 这四个命令到底是用来干嘛的,它们在PHP容器中都做了哪些事情?

Docker 中的PHP容器安装扩展的方式有

①通过pecl方式安装

②通过php 容器中自带的几个特殊命令来安装,这些特殊命令可以在Dockerfile中的RUN命令中进行使用。

这里,我们主要讨论的是第二种方案,如何通过PHP容器中的几个特殊命令来安装PHP扩展。

PHP中安装扩展有几个特殊的命令

①docker-php-source

②docker-php-ext-install

③docker-php-ext-enable

④docker-php-ext-configure

演示这三个命令的作用

都是在PHP容器中进行演示的,PHP容器启动太简单,不作过多介绍。

docker-php-source

此命令,实际上就是在PHP容器中创建一个/usr/src/php的目录,里面放了一些自带的文件而已。

我们就把它当作一个从互联网中下载下来的PHP扩展源码的存放目录即可。

事实上,所有PHP扩展源码扩展存放的路径: /usr/src/php/ext 里面。

格式:

docker-php-source extract | delete

参数说明:

* extract : 创建并初始化 /usr/src/php目录

* delete : 删除 /usr/src/php目录

案例:

root@803cbcf702a4:/usr/src# ls -l total 11896 #此时,并没有php目录 -rw-r--r-- 1 root root 12176404 Jun 28 03:23 php.tar.xz -rw-r--r-- 1 root root 801 Jun 28 03:23 php.tar.xz.asc root@803cbcf702a4:/usr/src# docker-php-source extract root@803cbcf702a4:/usr/src# ls -l total 11900 #此时,生产了php目录,里面还有一些文件,由于篇幅问题,就不进去查看了 drwxr-xr-x 14 root root 4096 Aug 9 09:01 php -rw-r--r-- 1 root root 12176404 Jun 28 03:23 php.tar.xz -rw-r--r-- 1 root root 801 Jun 28 03:23 php.tar.xz.asc root@803cbcf702a4:/usr/src# docker-php-source delete root@803cbcf702a4:/usr/src# ls -l total 11896 #此时,将已创建 php 目录给删除了 -rw-r--r-- 1 root root 12176404 Jun 28 03:23 php.tar.xz -rw-r--r-- 1 root root 801 Jun 28 03:23 php.tar.xz.asc root@803cbcf702a4:/usr/src#

docker-php-ext-enable

这个命令,就是用来启动 PHP扩展 的。我们使用pecl安装PHP扩展的时候,默认是没有启动这个扩展的,如果想要使用这个扩展必须要在php.ini这个配置文件中去配置一下才能使用这个PHP扩展。而 docker-php-ext-enable 这个命令则是自动给我们来启动PHP扩展的,不需要你去php.ini这个配置文件中去配置。

案例

# 查看现有可以启动的扩展 root@517b9c67507a:/usr/local/etc/php# ls /usr/local/lib/php/extensions/no-debug-non-zts-20170718/ opcache.so redis.so sodium.so root@517b9c67507a:/usr/local/etc/php# # 查看redis 扩展是否可以启动 root@517b9c67507a:/usr/local/etc/php# php -m | grep redis root@517b9c67507a:/usr/local/etc/php# # 启动 redis 扩展 root@517b9c67507a:/usr/local/etc/php# docker-php-ext-enable redis # 启动 成功 root@517b9c67507a:/usr/local/etc/php# php -m | grep redis redis root@517b9c67507a:/usr/local/etc/php# #说明,php容器中默认是没有php.ini配置文件的,加载原理如下所示 root@517b9c67507a:/usr/local/etc/php# php -i | grep -A 5 php.ini Configuration File (php.ini) Path => /usr/local/etc/php Loaded Configuration File => (none) # 核心是 /usr/local/etc/php/conf.d 目录下的扩展配置文件 Scan this dir for additional .ini files => /usr/local/etc/php/conf.d Additional .ini files parsed => /usr/local/etc/php/conf.d/docker-php-ext-redis.ini, /usr/local/etc/php/conf.d/docker-php-ext-sodium.ini root@517b9c67507a:/usr/local/etc/php#

docker-php-ext-install

这个命令,是用来安装并启动PHP扩展的。

命令格式:

docker-php-ext-install “源码包目录名”

注意点:

源码包需要放在 /usr/src/php/ext 下。

默认情况下,PHP容器没有 /usr/src/php这个目录,需要使用 docker-php-source extract来生成。

docker-php-ext-install 安装的扩展在安装完成后,会自动调用docker-php-ext-enable来启动安装的扩展。

卸载扩展,直接删除/usr/local/etc/php/conf.d 对应的配置文件即可。

案例

# 卸载redis 扩展 root@803cbcf702a4:/usr/local# rm -rf /usr/local/etc/php/conf.d/docker-php-ext-redis.ini root@803cbcf702a4:/usr/local# php -m [PHP Modules] Core ctype curl date dom fileinfo filter ftp hash iconv json libxml mbstring mysqlnd openssl pcre PDO pdo_sqlite Phar posix readline Reflection session SimpleXML sodium SPL sqlite3 standard tokenizer xml xmlreader xmlwriter zlib [Zend Modules] root@803cbcf702a4:/usr/local# #PHP容器默认是没有redis扩展的。所以我们通过docker-php-ext-install安装redis扩展 root@803cbcf702a4:/# curl -L -o /tmp/reids.tar.gz https://codeload.github.com/phpredis/phpredis/tar.gz/5.0.2 root@803cbcf702a4:/# cd /tmp root@517b9c67507a:/tmp# tar -xzf reids.tar.gz root@517b9c67507a:/tmp# ls phpredis-5.0.2 reids.tar.gz root@517b9c67507a:/tmp# docker-php-source extract root@517b9c67507a:/tmp# mv phpredis-5.0.2 /usr/src/php/ext/phpredis #检查移过去的插件源码包是否存在 root@517b9c67507a:/tmp# ls -l /usr/src/php/ext | grep redis drwxrwxr-x 6 root root 4096 Jul 29 15:04 phpredis root@517b9c67507a:/tmp# docker-php-ext-install phpredis # 检查redis 扩展是否已经安装上 root@517b9c67507a:/tmp# php -m | grep redis redis root@517b9c67507a:/tmp#

docker-php-ext-configure

docker-php-ext-configure 一般都是需要跟 docker-php-ext-install搭配使用的。

它的作用就是,当你安装扩展的时候,需要自定义配置时,就可以使用它来帮你做到。

案例

FROM php:7.1-fpm RUN apt-get update # 相关依赖必须手动安装 && apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libmcrypt-dev libpng-dev # 安装扩展 && docker-php-ext-install -j$(nproc) iconv mcrypt # 如果安装的扩展需要自定义配置时 && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && docker-php-ext-install -j$(nproc) gd

docker php安装gd扩展_Docker php安装扩展步骤相关推荐

  1. docker php安装gd扩展_docker php 容器安装GD库

    用thinkphp 5 Image库,创建缩略图报错:Call to undefined function imagecreatefromjpeg(),度娘一下发现是php 环境没有配置GD库扩展,因 ...

  2. docker php安装gd扩展_docker安装php扩展gd库

    Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 ...

  3. docker php安装gd扩展_给docker里的php安装gd扩展

    docker官方镜像为安装php扩展封装了函数,为开发者提供了很大的便利,以下以Dockerfile的形式演示安装gd扩展的方法,安装gd扩展需要安装几个依赖包,安装依赖包使用系统命令,安装命令根据基 ...

  4. docker php7 mysql分开,Docker nginx+php74+mysql57, 并安装gd和mysql扩展

    --subnet=172.18.0.0/24 mxd 1. 复制配置文件到宿主机: # 创建宿主机目录结构 mkdir-p /www/docker/nginx/logs mkdir-p /www/do ...

  5. docker php gd png.h,docker php 容器安装GD库

    用thinkphp 5 Image库,创建缩略图报错:Call to undefined function imagecreatefromjpeg(),度娘一下发现是php 环境没有配置GD库扩展,因 ...

  6. php添加gd扩展,PHP7安装gd扩展的方法

    PHP7安装gd扩展的方法 发布时间:2020-09-08 11:06:22 来源:亿速云 阅读:92 作者:小新 这篇文章将为大家详细讲解有关PHP7安装gd扩展的方法,小编觉得挺实用的,因此分享给 ...

  7. 从php源码中补充编译安装GD模块扩展的一些问题

    上篇博客,主要写了关于日志服务器的搭建. centos+rsyslog+mysql+loganalyzer搭建日志服务器_大橘子的博客-CSDN博客 其中loganalyzer界面需要图表,于是才需要 ...

  8. docker镜像指定安装源_Docker快速安装以及换镜像源

    不得不说 docker的火爆程度已经达到的地步, 由于国外docker搭建太慢,国外的安装文档也很全面,这里就不在详述,详情可以点击这里: 正主:Docker 官方镜像加速:http://www.do ...

  9. mac php5.6 gd 扩展,mac 编译安装php5.6.40

    准备 MAC环境mac mojave 10.14.1 Homebrew 2.0.1-25-g4550f70 mac item下使用brew管理依赖可以说是不二选了,可是最新的brew upgrade已 ...

最新文章

  1. 使用CSS将文字长度限制为n行
  2. 02 判断某个字符串是否由一个子字符串重复组成
  3. 经典!MATLAB线性等分linspace()函数,精确等分点数
  4. break与continue的的用法以及区别
  5. 《R和Ruby数据分析之旅》目录—导读
  6. 山东栋梁机器人比赛_谁是最强“移动机器人”?来深技师这场全国大赛一决高下!...
  7. CKfinder中文乱码的解决.
  8. Spring Batch完整入门实践
  9. java学生管理系统(简单版)
  10. 汇哲培训——CISA,CISSP等课程
  11. 5G无线技术基础自学系列 | 5G NR和LTE信道结构比较
  12. 求学信计算机专业英语,英语求学信模板
  13. 语言设置修复计算机 没有光盘,如何在Windows中创建系统修复光盘
  14. 计算机毕业设计ssm高校学报管理系统lt10k系统+程序+源码+lw+远程部署
  15. 利用R绘制venn图(VennDiagram、eulerr、venneuler、limma)
  16. DLL load failed while importing _cvxcore解决办法
  17. promise解决回调地狱(callback hell)
  18. Python 快速打开网页
  19. 内置方法及模块初识,set的hash算法面试题
  20. 软件开发主要流程步骤

热门文章

  1. 四川天邑TY1608网络机顶盒卡刷(成功)
  2. 计算机二级c相关书籍,二级C
  3. 《尽管去做-无压工作的艺术》阅读笔记
  4. 交换机三种端口模式的特点
  5. React Native 0.60以上集成code push热更新
  6. 计算机音乐谱小螺号,人音版小学四年级音乐上册(简谱)第6课《演唱 小螺号》教学设计.doc...
  7. C语言解决魔术师发牌问题(循环链表)
  8. C++流行的开源框架和库
  9. Spring源码编译教程(自己复习) 作者 周瑜
  10. SSL双向认证的认证模式设置问题