首页
留言板
友情链接
Search
1
【javascript】JS-向当前url追加参数
2,327 阅读
2
【PHP】生成随机昵称
2,189 阅读
3
【PHP】判断一个字符串是否属于序列化后的数据
2,019 阅读
4
【css】html+css给文章页,做阅读全文
1,960 阅读
5
【PHP】 设计模式(23种)
1,898 阅读
默认分类
typecho
代码改变世界
mysql
Winform
go
设计模式
PHP
python
nginx
网络安全
文艺范
mac
Search
标签搜索
php
typecho
代码注释
mysql
redis
nginx
golang
docker
html
curl
linux
go
thinkphp
mamp
laravel
跨域
http
rsa
sql
酒
依然范儿特西
累计撰写
122
篇文章
累计收到
26
条评论
首页
栏目
默认分类
typecho
代码改变世界
mysql
Winform
go
设计模式
PHP
python
nginx
网络安全
文艺范
mac
页面
留言板
友情链接
搜索到
2
篇与
docker
的结果
2021-11-05
win10下 docker文件安装路径更改
win10下 docker文件安装路径更改
2021年11月05日
101 阅读
0 评论
0 点赞
2021-10-22
Docker php安装扩展步骤详解
前言此篇,主要是演示docker-php-source , docker-php-ext-install ,docker-php-enable-docker-configure 这四个命令到底是用来干嘛的,它们在PHP容器中都做了哪些事情。 很多人很不理解在Dockerfile中安装PHP扩展的时候总是出现这几个命令,本篇就就是为你揭开这些命令的神秘面纱而准备的,所有案例都是本人自己运行过的。Docker 中的PHP容器安装扩展的方式有通过pecl方式安装通过php 容器中自带的几个特殊命令来安装,这些特殊命令可以在Dockerfile中的RUN命令中进行使用。这里,我们主要讨论的是第二种方案,如何通过PHP容器中的几个特殊命令来安装PHP扩展PHP中安装扩展有几个特殊的命令docker-php-sourcedocker-php-ext-installdocker-php-ext-enabledocker-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@richerdyoung.com:/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@richerdyoung.com:/usr/src# docker-php-source extract root@richerdyoung.com:/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@richerdyoung.com:/usr/src# docker-php-source delete root@richerdyoung.com:/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@richerdyoung.com:/usr/src#docker-php-ext-enable这个命令,就是用来启动 PHP扩展 的。 我们使用pecl安装PHP扩展的时候,默认是没有启动这个扩展的,如果想要使用这个扩展必须要在php.ini这个配置文件中去配置一下才能使用这个PHP扩展。 而 docker-php-ext-enable 这个命令则是自动给我们来启动PHP扩展的,不需要你去php.ini这个配置文件中去配置。案例 # 查看现有可以启动的扩展 root@richerdyoung.com:/usr/local/etc/php# ls /usr/local/lib/php/extensions/no-debug-non-zts-20170718/ opcache.so redis.so sodium.so root@richerdyoung.com:/usr/local/etc/php# # 查看redis 扩展是否可以启动 root@richerdyoung.com:/usr/local/etc/php# php -m | grep redis root@richerdyoung.com:/usr/local/etc/php# # 启动 redis 扩展 root@richerdyoung.com:/usr/local/etc/php# docker-php-ext-enable redis # 启动 成功 root@richerdyoung.com:/usr/local/etc/php# php -m | grep redis redis root@richerdyoung.com:/usr/local/etc/php# #说明,php容器中默认是没有php.ini配置文件的,加载原理如下所示 root@richerdyoung.com:/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@richerdyoung.com:/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@richerdyoung.com:/usr/local# rm -rf /usr/local/etc/php/conf.d/docker-php-ext-redis.ini root@richerdyoung.com:/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@richerdyoung.com:/usr/local# #PHP容器默认是没有redis扩展的。所以我们通过docker-php-ext-install安装redis扩展 root@richerdyoung.com:/# curl -L -o /tmp/reids.tar.gz https://codeload.github.com/phpredis/phpredis/tar.gz/5.0.2 root@richerdyoung.com:/# cd /tmp root@richerdyoung.com:/tmp# tar -xzf reids.tar.gz root@richerdyoung.com:/tmp# ls phpredis-5.0.2 reids.tar.gz root@richerdyoung.com:/tmp# docker-php-source extract root@richerdyoung.com:/tmp# mv phpredis-5.0.2 /usr/src/php/ext/phpredis #检查移过去的插件源码包是否存在 root@richerdyoung.com:/tmp# ls -l /usr/src/php/ext | grep redis drwxrwxr-x 6 root root 4096 Jul 29 15:04 phpredis root@richerdyoung.com:/tmp# docker-php-ext-install phpredis # 检查redis 扩展是否已经安装上 root@richerdyoung.com:/tmp# php -m | grep redis redis root@richerdyoung.com:/tmp#docker-php-ext-configuredocker-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
2021年10月22日
79 阅读
0 评论
0 点赞