GitHub – docker-library/php: Docker Official Image packaging for PHP
首先你選好了要什麼版本的 PHP

我選了 PHP 8.4 用 debian 12 (bookworm) 做基楚系統 , 把所有的 file download

記得下載後要把 docker-* 的5個檔案設定成可執行檔
chmod +x docker-*

開始製作自己客製 PHP 容器 ( php8.4-fpm 是製作後的 image name , 因為是我的第一版本可以設定 v1.0 做 tag
docker build -t php8.4-fpm:v1.0 .
完成後, 可以用以下 command 看看 image 是否成功
docker images

我們運行這個容器是否正常 , 是不是提供了 PHP 服務 ( 其中 phptest 是給這個容器名稱 )
docker run --name phptest -d php8.4-fpm:v1.0
docker ps

那麼現在基本的 PHP-FPM 已經完成 , 我們進入這個容器客製我們所需要的其他 module
docker exec -it phptest bash
進入容器後看看有什麼 module 可以新增到 php 內使用
可以安裝的有很多, 選擇你需要的來安裝
Possible values for ext-name:
bcmath bz2 calendar ctype curl dba dl_test dom enchant exif ffi fileinfo filter ftp gd gettext gmp hash iconv intl json ldap mbstring mysqli odbc opcache pcntl pdo pdo_dblib pdo_firebird pdo_mysql pdo_odbc pdo_pgsql pdo_sqlite pgsql phar posix random readline reflection session shmop simplexml snmp soap sockets sodium spl standard sysvmsg sysvsem sysvshm tidy tokenizer xml xmlreader xmlwriter xsl zend_test zip

因為我需要 supply ldap , 所以我先安裝 ldap module
docker-php-ext-install ldap
那時你會發現安裝程式告訴你缺失了 ldap.h , 你就要先安裝好編譯時需要的 library
apt-get update
apt-get install libldap2-dev
php -m
輸入 php -m 後你可以看到現在 php 是否已支持 ldap 了

docker commit 命令用於將容器的當前狀態保存為一個新的 Docker 映像 , 先找出該容器的 container id : 在命令行 input # docker ps

把現在的容器狀態打包成另一版本 , 例如 : php8.4-fpm tag 2.0
docker commit -a "Ken Ng" -m "加了ldap 支援" 87c3a055c35c php8.4-fpm:2.0

docker save -o 20250918-backup-phpfpm8.4-2.0.tar php8.4-fpm:2.0

你可以把這個 tar file 分發給同你一樣需求的用家使用
如何 LOAD 這個 tar file 成 docker 其中一個 image
docker load --input 20250918-backup-phpfpm8.4-2.0.tar

你會發現新的容器的 SIZE 同基礎 image 有增長