はじめに
docker上でlaravelの開発していて、必要なライブラリをcomposerでインストールしようとしたら下記のエラーが出て詰まった、、、
↓エラーメッセージ
Using version ^4.3 for laravel/socialite
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 bytes) in phar:///usr/bin/composer.phar/src/Composer/DependencyResolver/Solver.php on line 223
原因調査
コンテナに入って、以下のコマンドを実行
$ php -r 'phpinfo();' | grep memory_limit
$ memory_limit => 128M => 128M
確かにデフォルトのphpのメモリが少ない、、、
ちなみに -r は <?php を略したもので、
コマンドライン上でphpのプログラムを実行するためのオプションです!
↓参照元 phpコマンドのオプション
https://www.php.net/manual/ja/features.commandline.options.php
対処方法
- phpのコンテナのdockerファイルに以下を追加
php/Dockerfile
COPY php.ini /usr/local/etc/php/
- php.iniをdockerファイルのディレクトリに作成
php/php.ini
memory_limit = -1
-1は上限なしという意味
- コンテナを再起動し中に入ってメモリを確認する
$ php -r 'phpinfo();' | grep memory_limit
$ memory_limit => -1 => -1
php.iniの設定に切り替わってる〜!
ナイスですね〜〜〜と全裸の監督から聞こえてきそうです!
結果
もう一度composer installしたら、、、
Package manifest generated successfully
無事インストールできました!マーベラス!