這篇主要介紹Docker的PHP容器中自帶的幾個(gè)特殊命令來(lái)安裝擴(kuò)展。
- docker-php-source
- docker-php-ext-install
- docker-php-ext-enable
- docker-php-ext-configure
以上命令需要在容器內(nèi)運(yùn)行,也可以在Dockerfile中的RUN命令中進(jìn)行使用。
docker-php-sourec 初始化php源碼目錄
初始化源碼目錄
docker-php-source extract
運(yùn)行上面命令后,會(huì)在/usr/src目錄下生成一個(gè)php源碼目錄
案例:
### 運(yùn)行docker-php-source前的目錄結(jié)構(gòu)
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
### 執(zhí)行命令
root@dec18099fa25:/usr/src# docker-php-source extract
### 執(zhí)行后的目錄結(jié)構(gòu)
root@dec18099fa25:/usr/src# ls -l
total 12188
drwxr-xr-x 14 root root 4096 Jan 8 12:07 php # <--就多了這個(gè)源碼目錄
-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
可以在安裝好擴(kuò)展之后運(yùn)行,可以釋放磁盤(pán)空間。
docker-php-ext-enable 啟用擴(kuò)展
這個(gè)命令是用來(lái)啟用PHP擴(kuò)展的。我們使用pecl安裝PHP擴(kuò)展的時(shí)候,默認(rèn)是沒(méi)有啟用這個(gè)擴(kuò)展的,如果想要使用這個(gè)擴(kuò)展必須要在php.ini這個(gè)配置文件中去配置一下才能使用這個(gè)PHP擴(kuò)展。而 docker-php-ext-enable 這個(gè)命令則是自動(dòng)給我們來(lái)啟動(dòng)PHP擴(kuò)展的,不需要你去php.ini這個(gè)配置文件中去配置。
### 啟用redis擴(kuò)展
root@dec18099fa25:/usr/src# docker-php-ext-enable redis
docker-php-ext-install 安裝并啟用擴(kuò)展
docker-php-ext-install "源碼包目錄名"
注意事項(xiàng):
- “源碼包”需要放在/usr/src/php/ext目錄下;
- 默認(rèn)情況下無(wú)/usr/src/php這個(gè)目錄,需要先運(yùn)行
docker-php-source extract生成; - docker-php-ext-install安裝的擴(kuò)展,會(huì)自動(dòng)調(diào)用docker-php-ext-enable來(lái)啟用擴(kuò)展;
- 卸載擴(kuò)展,直接刪除/usr/local/etc/php/conf.d對(duì)應(yīng)的配置文件即可。
案例:
### 下載redis擴(kuò)展源碼
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目錄中的擴(kuò)展
root@dec18099fa25:/tmp# docker-php-ext-install phpredis
### 檢查redis擴(kuò)展是否已經(jīng)安裝成功
root@dec18099fa25:/tmp# php -m
docker-php-ext-configure 為擴(kuò)展設(shè)置自定義configure參數(shù)
例如安裝gd圖像擴(kuò)展,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