当前位置: 首页 > 后端技术 > PHP

dockerphp安装扩展步骤

时间:2023-03-29 22:59:49 PHP

演示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-sourceextract|delete参数说明:extract:创建并初始化/usr/src/php目录delete:删除/usr/src/php目录case:root@803cbcf702a4:/usr/src#ls-ltotal11896#此时有没有php目录-rw-r--r--1rootroot12176404Jun2803:23php.tar.xz-rw-r--r--1rootroot801Jun2803:23php.tar.xz。ascroot@803cbcf702a4:/usr/src#docker-php-sourceextractroot@803cbcf702a4:/usr/src#ls-ltotal11900#此时产生了php目录,里面还有一些文件,由于空间问题,不要进去检查drwxr-xr-x14rootroot4096Aug909:01php-rw-r--r--1rootroot12176404Jun2803:23php.tar.xz-rw-r--r--1rootroot801Jun2803:23php.tar.xz.ascroot@803cbcf702a4:/usr/src#docker-php-sourcedeleteroot@803cbcf702a4:/usr/src#ls-ltotal11896#Atthis点,将创建的php目录删除-rw-r--r--1rootroot12176404Jun2803:23php.tar.xz-rw-r--r--1rootroot801Jun2803:23php.tar.xz.ascroot@803cbcf702a4:/usr/src#docker-php-ext-enable该命令用于启动PHP扩展。当我们使用pecl安装PHP扩展时,默认情况下该扩展是不启用的。如果要使用这个扩展,必须在php.ini配置文件中配置才能使用这个PHP扩展。docker-php-ext-enable命令自动为我们启动PHP扩展,不需要去php.ini配置文件中配置。Case#查看已有的可以启动的扩展root@517b9c67507a:/usr/local/etc/php#ls/usr/local/lib/php/extensions/no-debug-non-zts-20170718/opcache.soredis.sosodium.soroot@517b9c67507a:/usr/local/etc/php##查看redis扩展是否可以启动root@517b9c67507a:/usr/local/etc/php#p??hp-m|grepredisroot@517b9c67507a:/usr/local/etc/php##启动redis扩展root@517b9c67507a:/usr/local/etc/php#docker-php-ext-enableredis#启动成功root@517b9c67507a:/usr/local/etc/php#p??hp-m|grepredisredisroot@517b9c67507a:/usr/local/etc/php##说明,php容器默认没有php.ini配置文件,加载原理如下root@517b9c67507a:/usr/local/etc/PHP#PHP-i|grep-A5php.iniConfigurationFile(php.ini)Path=>/usr/local/etc/phpLoadedConfigurationFile=>(none)#核心是/usr/local/etc/php/conf下的扩展。d目录配置文件扫描此目录以获取其他.ini文件=>/usr/local/etc/php/conf.d解析的其他.ini文件=>/usr/local/etc/php/conf.d/docker-php-ext-redis.ini,/usr/local/etc/php/conf.d/docker-php-ext-sodium.iniroot@517b9c67507a:/usr/local/etc/php#d命令docker-php-ext-install用于安装和启动PHP扩展命令格式:docker-php-ext-install"源码包目录名"注意:"源码包"需要放在/usr/src/PHP/分机。PHP容器默认没有/usr/src/php目录,需要使用docker-php-sourceextract生成。docker-php-ext-install安装的扩展安装完成后,会自动调用docker-php-ext-enable启动安装的扩展。卸载扩展只需要删除/usr/local/etc/php/conf.d对应的配置文件即可。case#卸载redis扩展root@803cbcf702a4:/usr/local#rm-rf/usr/local/etc/php/conf.d/docker-php-ext-redis.iniroot@803cbcf702a4:/usr/local#php-m[PHPModules]CorectypecurldatedomfileinfofilterftphashiconvjsonlibxmlmbstringmysqlndopensslpcrePDOpdo_sqlitePharposixreadlineReflectionssessionSimpleXMLsodiumSPLsqlite3standardtokenizerxmlxmlreaderxmlwriterzlib[ZendModules]root@803cbcf702a4:/usr/local##PHP扩展默认没有redis所以我们通过docker-php-ext-install安装redis扩展root@803cbcf702a4:/#curl-L-o/tmp/reids.tar.gzhttps://codeload.github.com/phpredis/phpredis/tar.gz/5.0.2root@803cbcf702a4:/#cd/tmproot@517b9c67507a:/tmp#tar-xzfreids.tar.gzroot@517b9c67507a:/tmp#lsphpredis-5.0.2reids.tar.gzroot@517b9c67507a:/tmp#docker-php-sourceextractroot@517b9c67507a:/tmp#mvphpredis-5.0.2/usr/src/php/ext/phpredis#检查移动的插件源码包是否存在root@517b9c67507a:/tmp#ls-l/usr/源代码/php/ext|grepredisdrwxrwxr-x6rootroot4096Jul2915:04phpredisroot@517b9c67507a:/tmp#docker-php-ext-installphpredis#查看root@517b9c67507a:/tmp#php-m|是否安装了redis扩展grepredisredisroot@517b9c67507a:/tmp#docker-php-ext-configuredocker-php-ext-configure一般需要配合docker-php-ext-install使用。它的作用是当你安装一个扩展需要自定义配置的时候,你可以使用它来帮你完成。CaseFROMphp:7.1-fpmRUNapt-getupdate\#相关依赖必须手动安装&&apt-getinstall-y\libfreetype6-dev\libjpeg62-turbo-dev\libmcrypt-dev\libpng-dev\#安装扩展&&docker-php-ext-install-j$(nproc)iconvmcrypt\#如果安装的扩展需要自定义配置&&docker-php-ext-configuregd--with-freetype-dir=/usr/include/--with-jpeg-dir=/usr/include/\&&docker-php-ext-install-j$(nproc)gd