DockerでPHPのPeclのextensionを入れる方法
今回はDockerの公式PHPイメージでPeclを使ったextension(mailparse)を入れるのに苦労した話をします。
Pecl extensionsの入れ方
公式Dockerイメージを使う場合は、extensionを有効化するためにdocker-php-ext-*
という名前のコマンド群が用意されています。
PHPにもともと入っているextensionsはDockerfile内で
docker-php-ext-install curl
とすれば入ります。
Peclの場合でもかなり簡単で、memcached
を入れようと思ったら
pecl install memcached docker-php-ext-enable memcached
で有効にできます。
コンパイルオプションの必要なものはこのままではできない
今回はmailparse
というextensionを入れようとしたのですが、ドキュメントを見ると--enable-mailparse
というPHPのコンパイルオプションが必要だと書いてあったので、上の方法だけでは入りません。
途方に暮れて、公式イメージのDockerfileを眺めていると$PHP_EXTRA_CONFIGURE_ARGS
という変数が使われているのを発見しました。
ここに値を入れれることでオプションを追加することができます。
dockerはバージョン1.9頃から--build-arg
というコマンドラインオプションを提供しています。
ということでDockerfileには
pecl install mailparse docker-php-ext-enable mailparse
と書いておいて、build時に
docker build . --build-arg PHP_EXTRA_CONFIGURE_ARGS="--enable-mailparse"
とすることで無事mailparseが使えるようになりました!