天天看點

docker php安裝gd擴充_Docker php安裝擴充步驟

docker php安裝gd擴充_Docker 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-source extract | delete

參數說明:

* extract : 建立并初始化 /usr/src/php目錄

* delete : 删除 /usr/src/php目錄

案例:

[email protected]:/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 [email protected]:/usr/src# docker-php-source extract [email protected]:/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 [email protected]:/usr/src# docker-php-source delete [email protected]:/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 [email protected]:/usr/src#

docker-php-ext-enable

這個指令,就是用來啟動 PHP擴充 的。我們使用pecl安裝PHP擴充的時候,預設是沒有啟動這個擴充的,如果想要使用這個擴充必須要在php.ini這個配置檔案中去配置一下才能使用這個PHP擴充。而 docker-php-ext-enable 這個指令則是自動給我們來啟動PHP擴充的,不需要你去php.ini這個配置檔案中去配置。

案例

# 檢視現有可以啟動的擴充 [email protected]:/usr/local/etc/php# ls /usr/local/lib/php/extensions/no-debug-non-zts-20170718/ opcache.so redis.so sodium.so [email protected]:/usr/local/etc/php# # 檢視redis 擴充是否可以啟動 [email protected]:/usr/local/etc/php# php -m | grep redis [email protected]:/usr/local/etc/php# # 啟動 redis 擴充 [email protected]:/usr/local/etc/php# docker-php-ext-enable redis # 啟動 成功 [email protected]:/usr/local/etc/php# php -m | grep redis redis [email protected]:/usr/local/etc/php# #說明,php容器中預設是沒有php.ini配置檔案的,加載原理如下所示 [email protected]:/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 [email protected]:/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 擴充 [email protected]:/usr/local# rm -rf /usr/local/etc/php/conf.d/docker-php-ext-redis.ini [email protected]:/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] [email protected]:/usr/local# #PHP容器預設是沒有redis擴充的。是以我們通過docker-php-ext-install安裝redis擴充 [email protected]:/# curl -L -o /tmp/reids.tar.gz https://codeload.github.com/phpredis/phpredis/tar.gz/5.0.2 [email protected]:/# cd /tmp [email protected]:/tmp# tar -xzf reids.tar.gz [email protected]:/tmp# ls phpredis-5.0.2 reids.tar.gz [email protected]:/tmp# docker-php-source extract [email protected]:/tmp# mv phpredis-5.0.2 /usr/src/php/ext/phpredis #檢查移過去的插件源碼包是否存在 [email protected]:/tmp# ls -l /usr/src/php/ext | grep redis drwxrwxr-x 6 root root 4096 Jul 29 15:04 phpredis [email protected]:/tmp# docker-php-ext-install phpredis # 檢查redis 擴充是否已經安裝上 [email protected]:/tmp# php -m | grep redis redis [email protected]:/tmp#

docker-php-ext-configure

docker-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

docker php安裝gd擴充_Docker php安裝擴充步驟