Docker + Laravel memory_limit 変更

Docker

今回は以下の条件下で動くLaravelアプリケーションのメモリー上限を変更します

  • Windows10
  • Docker Desktop 4.7.1
  • PHP 7.4.29
  • Laravel Framework 6.20.29

Dockerの設定

Docker Desktopの設定画面

以前はこちらの画面でメモリの割り当てを設定できたようです が、
現在のバージョンではGUIで設定ができなくなっています
代わりに、「.wslconfig file」を使うように書かれているので
とりあえずリファレンスを確認しましょう

.wslconfig

wslとは?
Windows Subsystem for Linux の略称らしいです

リファレンスを見ると
CPUやらメモリの使用量をconfigで定義できるようなことが書かれています

で、どう使うのかっていうところですが

C:\Users\<ユーザ名>\.wslconfig を作成して、中身に以下を記載するだけでした

[wsl2]
memory=1GB

上述の隠しファイルに記載して保存しておきます

PHPの設定

php.iniを編集

まずはphp.iniがどこにあるのか探りましょう

php -i | grep php.ini でどこのphp.iniがロードされているかわかります

[root@d53b4b685b2c sample]# php -i | grep php.ini
Configuration File (php.ini) Path => /etc
Loaded Configuration File => /etc/php.ini   <==== コレです
[root@d53b4b685b2c sample]#

vi /etc/php.ini で開いて

; memory_limit = 128MB  <==== こちらをコメントアウト
memory_limit = -1       <==== こちらを追記

-1 は無制限を意味します
リソースに余裕がない場合はやめておきましょう!

サービスの再起動

ここでものすごくハマりました

Apacheの再起動

systemctl restart httpd.service を実行しても、phpinfo() で表示されるmemory_limitは128MBのまま
実はもう一つ再起動が必要でした

php-fpmの再起動

systemctl restart php-fpm.service を実行した上で、phpinfo() を確認すると
memory_limitに -1 が表示されました

やりましたー

php-fpmって、意識的に何かに使っているわけでもないのですが
こちらも再起動が必要となる場合があるので、php.iniを変更しても
反映されないなーと悩んでいる方はこれが原因かもしれません