首页
📷在线壁纸
🎬娱乐天地
🔖友情链接
更多
📝留言板
Search
1
【javascript】JS-向当前url追加参数
2,345 阅读
2
【PHP】生成随机昵称
2,219 阅读
3
【PHP】判断一个字符串是否属于序列化后的数据
2,024 阅读
4
【css】html+css给文章页,做阅读全文
1,975 阅读
5
【PHP】 设计模式(23种)
1,910 阅读
📂默认分类
💓typecho
🏳️🌈代码改变世界
🍇 mysql
🍈 Winform
🍓 golang
🍉 设计模式
🥝 PHP
🍎 python
🍊 nginx
🍋 网络安全
🍍 javascript
🫑 database
🍭文艺范
🍏mac
AI
LLM
image
audio
yolo
3D
code
登录
Search
标签搜索
php
typecho
代码注释
redis
mysql
go
golang
nginx
thinkphp
docker
gin
linux
curl
html
mamp
算法
短网址
构造函数
webhook
代码片段
依然范儿特西
累计撰写
145
篇文章
累计收到
1
条评论
首页
栏目
📂默认分类
💓typecho
🏳️🌈代码改变世界
🍇 mysql
🍈 Winform
🍓 golang
🍉 设计模式
🥝 PHP
🍎 python
🍊 nginx
🍋 网络安全
🍍 javascript
🫑 database
🍭文艺范
🍏mac
AI
LLM
image
audio
yolo
3D
code
页面
📷在线壁纸
🎬娱乐天地
🔖友情链接
📝留言板
搜索到
3
篇与
的结果
2024-09-27
Windows系统Starting the Docker Engine 一直转圈解决方法
启动报错: docker running engine: waiting for the VM setup to be ready: starting WSL en
2024年09月27日
1 阅读
0 评论
0 点赞
2021-11-05
win10下 docker文件安装路径更改
win10下 docker文件安装路径更改
2021年11月05日
105 阅读
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日
81 阅读
0 评论
0 点赞