dockerでintlをインストール
Dockerfileを作っていると、PHPの拡張機能をインストールする時があります。そんなときエラーがでて困ってしまうことも多いです。今回は拡張機能の一つのphp-intlをインストールしようとしたらエラーとなったのでそのメモです
エラー文
------
> RUN apt install -y intl:
0.234
0.234 WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
0.234
0.236 Reading package lists...
0.954 Building dependency tree...
1.122 Reading state information...
1.129 E: Unable to locate package intl
------
build中にエラーとなります。拡張機能をどうやったらインストールできるか・・・
環境
- PHP:php-fpm:8.2
Dockerfileのため、普段とは違うDebian系が入っているイメージになります。とりあえず以下のコマンドはやっても駄目でした
- RUN apt install -y intl
- RUN apt install -y php-intl
- RUN apt install -y php8-intl
- RUN apt install -y php8.2-intl
調べてみる
調べてみると、どうやらDockerのコマンドでもインストールできるみたいでした。
- RUN docker-php-ext-install intl
エラー
参考サイトなどでは上記のコマンドだけでインストール出来ますとありますが、僕は何度やってもbuildエラーとなりました。
対応方法
結論としては以下の方法でインストールできるようになりました
RUN docker-php-ext-configure intl RUN docker-php-ext-install intl
これでエラー文がでることなくインストールできるようになります。
2回目のbuildからはdocker-php-ext-configure
は無くても問題ないです。
なぜこうなるのか?
調べてみると、docker-php-ext-configure
とdocker-php-ext-install
では違いがありました。
- docker-php-ext-configureは設定をカスタマイズしたい時に使う
- docker-php-ext-installは解凍してインストールをしたい時に使う
intlはカスタマイズをして行うもののため、configureを指定しないと駄目でした。configureを指定してもインストールされるわけではないので、その後にinstallを指定する必要があります。
Debian系だけしかつかえない?
このdocker-php-ext-*
コマンドはもしかしたらDebian系のベースOSでしか使えないかもしれません。RedHat系のOSで試したら動きませんでした。
個人支援・寄付について
サイトラボでは個人支援・寄付を受けております。ご協力いただける方はお願いいたします。当サイトではビットコインで受け付けております。
- ビットコイン:3LHnADwZwUbic2L45EnVJEykiG6KfbqrwS