PHP FPM 是一種處理 PHP 腳本的機制,它能夠讓 PHP 在 PHP-FPM 進程池中運行。相比于常規 PHP CGI 進程,PHP FPM 更加高效穩定。而 Dockerfile 則是構建 Docker 鏡像的一個文件。
為了實現在 Docker 中運行 PHP FPM,我們需要構建一個 Php FPM Dockerfile。具體的 Dockerfile 可以如下所示:
FROM php:fpm RUN apt-get update \ && apt-get install -y \ libzip-dev \ libargon2-dev \ libpng-dev \ libjpeg-dev \ libfreetype6-dev \ && docker-php-ext-install zip pdo_mysql mysqli \ && docker-php-ext-configure gd \ --with-freetype \ --with-jpeg \ && docker-php-ext-install gd \ && pecl install redis \ && docker-php-ext-enable redis
上述 Dockerfile 首先使用了 php:fpm 作為基礎鏡像,并安裝了 libzip-dev、libargon2-dev、libpng-dev、libjpeg-dev、libfreetype6-dev 等軟件包,這些軟件包是必須的擴展依賴。
接下來,我們使用了 docker-php-ext-install 命令來加載 PHP 擴展。zip 擴展用于解決 Zip 壓縮和解壓縮功能,pdo_mysql 和 mysqli 擴展用于連接 MySQL 數據庫。gd 擴展則用于處理圖片,其中 --with-freetype 和 --with-jpeg 參數用于指定依賴庫的位置。
最后,我們使用 pecl 命令加載并啟用 redis 擴展,這樣 PHP 便能夠使用 Redis 了。
當然,此處僅僅是一個簡單的 Dockerfile,還有很多擴展、配置文件等都可以通過 Dockerfile 安裝和配置。
實際開發中,我們可以在構建鏡像時指定 Dockerfile,比如:
$ docker build -t myphpfpm --file Dockerfile.phpfpm .
命令中使用 --file 參數指定 Dockerfile 的位置,點號表示 Dockerfile 所在路徑是當前目錄。
總而言之,使用 Dockerfile 可以幫助我們實現 PHP FPM 在 Docker 中的運行,而且方便擴展和配置,讓我們的開發過程更加便捷。