一、構建PHP鏡像需要用到的命令
以下命令都需要在php容器中執行
docker-php-source:是在PHP容器中創建一個/usr/src/php的目錄,里面放了一些自帶的文件,自帶的PHP擴展,擴展存放的路徑/usr/src/php/ext
docker-php-source [ extract | delete ] 參數說明: extract : 創建並初始化 /usr/src/php目錄 delete : 刪除 /usr/src/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 對應的配置文件即可。
docker-php-ext-enable:就是用來啟動PHP擴展的。我們使用pecl安裝PHP擴展的時候,默認是沒有啟動這個擴展的,如果想要使用這個擴展必須要在php.ini這個配置文件中去配置一下才能使用這個PHP擴展。而 docker-php-ext-enable 這個命令則是自動給我們來啟動PHP擴展的,不需要你去php.ini這個配置文件中去配置。
安裝redis擴展 pecl install redis-5.3.4 docker-php-ext-enable redis
二、按需求構建php鏡像,安裝需要的php模塊
# cat Dockerfile FROM php:7.3.28-fpm ADD swoole.tar.gz /usr/src/php/ext/ # 需要先自行下載 curl -fsSL 'https://pecl.php.net/get/swoole-4.5.9.tgz',解壓后包名修改為swoole,再壓縮成tar包。也可以直接在容器中下載改名,因為網絡原因經常失敗,所以先在本地下載后改名打包。 RUN apt-get update && apt-get install -y \ bzip2 \ libbz2-dev \ libpng-dev \ libgmp-dev \ libxml2-dev \ libxslt1-dev \ libzip-dev \ && docker-php-source extract \ && docker-php-ext-install exif \ bcmath \ bz2 \ calendar \ gd \ gettext \ gmp \ mysqli \ pcntl \ pdo_mysql \ shmop \ soap \ sockets \ sysvsem \ xmlrpc \ xsl \ zip \ swoole \ && pecl install redis-5.3.4 \ && pecl install mongodb \ && docker-php-ext-enable redis mongodb \ && docker-php-source delete \ && rm -rf /var/lib/apt/lists/* \ && apt-get clean
安裝php模塊的時候一些依賴報錯
模塊名稱:bz2 報錯:configure: error: Please reinstall the BZip2 distribution
解決方法:apt-get install bzip2 libbz2-dev -y
模塊名稱:gd 報錯:configure: error: png.h not found.
解決方法:apt-get install libpng-dev -y
模塊名稱:gmp 報錯:configure: error: Unable to locate gmp.h
解決方法:apt-get install libgmp-dev
模塊名稱:soap 報錯:configure: error: libxml2 not found. Please check your libxml2 installation.
解決方法:apt-get install -y libxml2-dev -y
模塊名稱:xmlrpc 報錯:configure: error: libxml2 not found. Use --with-libxml-dir=<DIR>
解決方法:apt-get install -y libxml2-dev -y
模塊名稱:xsl 報錯:configure: error: xslt-config not found. Please reinstall the libxslt >= 1.1.0 distribution
解決方法:apt-get install libxslt1-dev
模塊名稱:zip 報錯:checking for the location of zlib... configure: error: zip support requires ZLIB. Use --with-zlib-dir=<DIR> to specify prefix where ZLIB include and library are located
解決方法:apt-get install libzip-dev -y