【Apple Silicon】Docker Desktopはこまめに更新しよう

起きたこと

Dockerコンテナ上のComposerでパッケージを追加しようとした時にCannot allocate memoryエラーが出た。

[root@8b736af411ab www]# composer require --dev squizlabs/php_codesniffer

mmap() failed: [12] Cannot allocate memory

mmap() failed: [12] Cannot allocate memory
[05-Oct-2021 13:52:53 Asia/Tokyo] PHP Fatal error:  Out of memory (allocated 52035584) (tried to allocate 147456 bytes) in phar:///usr/local/bin/composer/src/Composer/Json/JsonFile.php on line 275

Fatal error: Out of memory (allocated 52035584) (tried to allocate 147456 bytes) in phar:///usr/local/bin/composer/src/Composer/Json/JsonFile.php on line 275

答え

qiita.com

Docker Desktopのバージョンが3.3.1だったため、メモリリークの問題を抱えていた。 Docker Desktopを最新の4.1.0にしたら解決した。

[root@8b736af411ab www]# COMPOSER_MEMORY_LIMIT=-1 $(which composer) require --dev squizlabs/php_codesniffer -vvv --profile

~~~~

Package manifest generated successfully.
[836.4MiB/141.24s] Memory usage: 836.45MiB (peak: 1457.58MiB), time: 141.24s

模索した様子(全部ダメ)

memory_limitを上げてみた

[root@8b736af411ab www]# php -i | grep memory_limit
memory_limit => -1 => -1
[root@8b736af411ab www]# composer require --dev squizlabs/php_codesniffer

~~

mmap() failed: [12] Cannot allocate memory

mmap() failed: [12] Cannot allocate memory

( 'ᾥ' )ダメ

composerコマンド実行時にmemory_limit=-1を明示した

[root@8b736af411ab www]# php -d memory_limit=-1 $(which composer) require --dev --with-all-dependencies squizlabs/php_codesniffer -vvv --profile

~~

mmap() failed: [12] Cannot allocate memory

mmap() failed: [12] Cannot allocate memory

( 'ᾥ' )ダメ

[root@8b736af411ab www]# COMPOSER_MEMORY_LIMIT=-1 $(which composer) require --dev --with-all-dependencies squizlabs/php_codesniffer -vvv --profile

~~

mmap() failed: [12] Cannot allocate memory

mmap() failed: [12] Cannot allocate memory

( 'ᾥ' )ダメ

コンテナが使えるメモリ・swap領域を増やしてみた

f:id:iine_programming:20211005164106p:plain

[root@c9f8af0c1933 www]# free -m
              total        used        free      shared  buff/cache   available
Mem:          15987         773       13591         395        1622       14587
Swap:          4095           0        4095
[root@8b736af411ab www]# composer require --dev squizlabs/php_codesniffer

~~

mmap() failed: [12] Cannot allocate memory

mmap() failed: [12] Cannot allocate memory

( 'ᾥ' )ダメ