2025-08-30

DockerでPHP環境を構築するには install-php-extensions を使うと良いかもよ

Frankenphpのドキュメント を見ていたら install-php-extensions という docker-php-ext-install みたいなコマンドでPHP拡張をインストールしていたので気になったので調べてみたメモ。

docker-php-ext-install

公式のPHPのDockerイメージに入っている docker-php-ext-install はPHP拡張をインストールしてくれるのだが、そのPHP拡張をインストールするために必要な依存関係をaptやapkで自動インストールしてくれないので、その依存パッケージを調べて自前でインストールする必要がある。そして、これがとても面倒で、毎回ググっていたりする。 また、peclでインストールする必要がある拡張もあるため、ext-installだっけ?peclだっけ?みたいな脳内分岐ロジックが発生していた。結果としてDockerfileのRUNの中身が増えがちだった。

install-php-extensions

docker-php-ext-installの課題を解決してくれるのが install-php-extensions で、依存関係も含めてapt/apk installしてくれたり、pecl経由のインストールもすべてこのスクリプトが担ってくれている。

例えば zip をインストールするには libzip が必要になったりするがその依存関係を意識することなく以下のコマンドだけでインストールできる。

install-php-extensions zip

さらにはcomposerもインストールできる。マスチステージビルドでcomposer取ってきたりしなくても良い。

install-php-extensions @composer

ということでめっちゃ便利だしFrankenphpのDockerfileでも使われていて品質的にも問題なさそうに思うので、積極的に使ったほうが良いかもなーと思ったりしている。