这篇主要介绍Docker的PHP容器中自带的几个特殊命令来安装扩展。
- docker-php-source
- docker-php-ext-install
- docker-php-ext-enable
- docker-php-ext-configure
以上命令需要在容器内运行,也可以在Dockerfile中的RUN命令中进行使用。
docker-php-sourec 初始化php源码目录
初始化源码目录
docker-php-source extract
运行上面命令后,会在/usr/src目录下生成一个php源码目录
案例:
### 运行docker-php-source前的目录结构
root@dec18099fa25:~# cd /usr/src/
root@dec18099fa25:/usr/src# ls -l
total 12184
-rw-r--r-- 1 root root 12472236 Jan 10 2019 php.tar.xz
-rw-r--r-- 1 root root 455 Jan 10 2019 php.tar.xz.asc
### 执行命令
root@dec18099fa25:/usr/src# docker-php-source extract
### 执行后的目录结构
root@dec18099fa25:/usr/src# ls -l
total 12188
drwxr-xr-x 14 root root 4096 Jan 8 12:07 php # <--就多了这个源码目录
-rw-r--r-- 1 root root 12472236 Jan 10 2019 php.tar.xz
-rw-r--r-- 1 root root 455 Jan 10 2019 php.tar.xz.asc
清除源码目录
docker-php-source delete
可以在安装好扩展之后运行,可以释放磁盘空间。
docker-php-ext-enable 启用扩展
这个命令是用来启用PHP扩展的。我们使用pecl安装PHP扩展的时候,默认是没有启用这个扩展的,如果想要使用这个扩展必须要在php.ini这个配置文件中去配置一下才能使用这个PHP扩展。而 docker-php-ext-enable 这个命令则是自动给我们来启动PHP扩展的,不需要你去php.ini这个配置文件中去配置。
### 启用redis扩展
root@dec18099fa25:/usr/src# docker-php-ext-enable redis
docker-php-ext-install 安装并启用扩展
docker-php-ext-install "源码包目录名"
注意事项:
- “源码包”需要放在/usr/src/php/ext目录下;
- 默认情况下无/usr/src/php这个目录,需要先运行
docker-php-source extract
生成; - docker-php-ext-install安装的扩展,会自动调用docker-php-ext-enable来启用扩展;
- 卸载扩展,直接删除/usr/local/etc/php/conf.d对应的配置文件即可。
案例:
### 下载redis扩展源码
root@dec18099fa25:/tmp# curl -L -o ./redis-4.3.0.tgz https://pecl.php.net/get/redis-4.3.0.tgz
### 解压源码
root@dec18099fa25:/tmp# tar xvf redis-4.3.0.tgz
### 将源码包移至/usr/src/php/ext/,并命名为phpredis
root@dec18099fa25:/tmp# mv redis-4.3.0 /usr/src/php/ext/phpredis
### 安装phpredis目录中的扩展
root@dec18099fa25:/tmp# docker-php-ext-install phpredis
### 检查redis扩展是否已经安装成功
root@dec18099fa25:/tmp# php -m
docker-php-ext-configure 为扩展设置自定义configure参数
例如安装gd图像扩展,Dockerfile如下所示:
FROM php:7.4-fpm
RUN apt-get update && apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng-dev \
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install -j$(nproc) gd
网友评论