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でも使われていて品質的にも問題なさそうに思うので、積極的に使ったほうが良いかもなーと思ったりしている。