備忘録です。
やりたいこと
- Dockerコンテナ内で、PHPのライブラリの依存管理ツール composer をインストールしたい。
状況
- composer installコマンドを実行したところ、Killed になる。
dockerコンテナ内
/app # composer install
Loading composer repositories with package information
Updating dependencies (including require-dev)
Killed
- 以下コマンドを実行しても、同様。
/app # composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
Killed
解決方法
-
メモリ不足が原因のようでした。
-
以下記事を参考に進める。(記事に感謝)
Docker内でcomposer require したらkilledになったときの対応 - Qiita
- 編集:docker/php/php.ini
memory_limit = 2048M
-
Docker Dashboard上で、Resourcesを変更する
Memory:2.00GB→8.00GB、Swap:2GB→4GB
- インストールする。(殺されなかった!)
/app # composer install
...
Package manifest generated successfully.
64 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
- インストール完了後、元に戻しておいた。
- Memory:2.00GB、Swap:2GB
以下参考(解決に至るまでに参考にさせていただいた記事)
- 検索したところ、メモリ不足が原因か。
[PHP] composer install が killed で失敗するときの原因と対処
# dd if=/dev/zero of=/var/swap bs=1M count=1024
# mkswap /var/swap
# swapon /var/swap
- 実行したところ、変わらずエラー
/app # dd if=/dev/zero of=/var/swap bs=1M count=1024
1024+0 records in
1024+0 records out
/app # mkswap /var/swap
Setting up swapspace version 1, size = 1073737728 bytes
UUID=78e35732-6a85-47ab-b697-bf1c62c0994b
/app # swapon /var/swap
swapon: /var/swap: Operation not permitted
/app # composer install
Loading composer repositories with package information
Updating dependencies (including require-dev)
Killed
- 作成したスワップファイルのパーミッションが原因です。パーミッションを書き換えればOK、とのことで試してみる。(変わらずエラー)
/app # chmod 600 /var/swap
/app # swapon /var/swap
swapon: /var/swap: Operation not permitted
/app # composer install
Loading composer repositories with package information
Updating dependencies (including require-dev)
Killed