Docker内でcomposer require したらkilledになったときの対応


Mac上で Docker (docker-compose) で開発環境を作り、開発中の Laravel のアプリケーションに composer require をしたら、中断されてしまいました

composer require ****/*****
(中略)
killed

composer が途中で終わってしまうといえば、メモリ不足が定石かなと思います。
会社の先輩からこのリンクを送ってもらい、疑惑が確信に変わりました。

[PHP] composer install が killed で失敗するときの原因と対処
https://webbibouroku.com/Blog/Article/composer-killed

PHP memory_limit の引き上げ

メモリ不足とわかったところで、まずDocker内で使っている php.ini の memory_limit を増やしました。
どのくらい必要なのかわからなかったけど、とりあえず2GB(2048MB)にしました。

memory_limit = 2048M

設定変更後、 docker build して再起動

Docker for Mac のメモリ割り当てを増やす

Docker for Mac で指定しているDockerが利用できるリソースが、当初 2GBとなっていました。使っている MacBook Pro には 64GBものメモリを積んでいるので、ドドーンと 8GB まで増やしました。ここはマシンスペックとの相談かなと思います。

変更後、Dockerホストの再起動がかかりました。

解決!!

上記2点でメモリの設定を変更して、 composer require が無事実行できました。
composer update でも同様に大量のメモリが必要なので、同じような対応が必要になるかもしれません。