Docker php安装扩展步骤详解

这篇主要介绍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

你可能感兴趣的:(Docker php安装扩展步骤详解)