php:8.1-fpm-bullseye
$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
NAME="Debian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
/usr/local/etc/php
以下に配置。
拡張モジュールのインストールは大きく3種類あります。
docker-php-ext-install
でインストールpecl install
でインストールpear install
でインストールどの拡張モジュールが PECL かは所属 > PECL 拡張で確認できます。
上記に記載のない PECL パッケージもあるので https://pecl.php.net/ で検索してください(例 gRPC)
RUN docker-php-ext-install pdo_mysql
/usr/local/etc/php/conf.d/docker-php-ext-pdo_mysql.ini
が作成される( docker-php-ext-enable
を実行する必要はない)。
container$ docker-php-ext-install --help
usage: /usr/local/bin/docker-php-ext-install [-jN] [--ini-name file.ini] ext-name [ext-name ...]
ie: /usr/local/bin/docker-php-ext-install gd mysqli
/usr/local/bin/docker-php-ext-install pdo pdo_mysql
/usr/local/bin/docker-php-ext-install -j5 gd mbstring mysqli pdo pdo_mysql shmop
if custom ./configure arguments are necessary, see docker-php-ext-configure
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 imap intl json ldap mbstring mysqli oci8 odbc opcache pcntl pdo pdo_dblib pdo_firebird pdo_mysql pdo_oci pdo_odbc pdo_pgsql pdo_sqlite pgsql phar posix pspell readline reflection session shmop simplexml snmp soap sockets sodium spl standard sysvmsg sysvsem sysvshm tidy tokenizer xml xmlreader xmlwriter xsl zend_test zip
Some of the above modules are already compiled into PHP; please check
the output of "php -i" to see which modules are already loaded.
# インストール
RUN pecl install grpc
# 有効化(もしくは php.ini で有効化)
RUN docker-php-ext-enable grpc
pecl
でインストールした拡張モジュールは自動では有効化されません。以下のどちらかで有効化します。
※ 両方実行するとModule "xxxxx" is already loadedが発生するのでどちらか一方にします。
RUN docker-php-ext-enable grpc
/usr/local/etc/php.ini
に配置)例
[PHP]
memory_limit = 512M
max_execution_time = 300
[Date]
date.timezone = "Asia/Tokyo"
[Extentions]
extension=grpc.so
どの拡張モジュールが PECL かは所属で確認。
拡張モジュールのインストールの設定をする。 多くの場合は必要ない。
docker-php-ext-configure gd --with-freetype --with-jpeg
ref. https://hub.docker.com/_/php
各拡張モジュールで指定できるオプションは PHP 公式マニュアルを参照してください。 GD の場合は https://www.php.net/manual/ja/image.installation.php を参照してください。
拡張モジュールをインストール & 有効化します。
docker-php-ext-install
でインストールできる拡張モジュールは docker-php-ext-install --help
で確認できます。
/usr/local/etc/php/conf.d/docker-php-ext-pdo_mysql.ini
)拡張モジュールを有効化する( ini ファイルを作成)。docker-php-ext-install
でインストールした拡張モジュールは自動で有効化されるので、 PECL でインストールした拡張モジュールに対して発行します。
php --ini
で確認できる。例)
/usr/local/etc/php/conf.d/docker-php-ext-opcache.ini
と /usr/local/etc/php/conf.d/php.ini
の場合は以下順序で読み込む。
設定が重複している場合は、後から読み込んだ内容が優先される。
/usr/local/etc/php/conf.d/docker-php-ext-opcache.ini
/usr/local/etc/php/conf.d/php.ini
ref.