# 結論
Swapファイルの領域が足りなかったみたいです。
### ◆Swapファイルとは
メモリの容量を一時的に増やすために準備されるファイル。
EC2はデフォルトではSwapファイルを用意していないため、大きな処理をすると処理エラーが起こってしまうようですね!
# エラー文
ターミナル.
[ec2-user@ip-10-0-0-180 app]$ docker build .
Sending build context to Docker daemon 889.9kB
Step 1/12 : FROM ruby:2.7
---> 7e58098089a4
~省略~
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
current directory: /usr/local/bundle/gems/sassc-2.4.0/ext
/usr/local/bin/ruby -I /usr/local/lib/ruby/2.7.0 -r
./siteconf20201228-6-fydanh.rb extconf.rb
creating Makefile
current directory: /usr/local/bundle/gems/sassc-2.4.0/ext
make "DESTDIR=" clean
current directory: /usr/local/bundle/gems/sassc-2.4.0/ext
make "DESTDIR="
compiling ./libsass/src/ast.cpp
~省略~
compiling ./libsass/src/parser.cpp
virtual memory exhausted: Cannot allocate memory
make: *** [Makefile:237: parser.o] Error 1
make failed, exit code 2
Gem files will remain installed in /usr/local/bundle/gems/sassc-2.4.0 for
inspection.
Results logged to
/usr/local/bundle/extensions/x86_64-linux/2.7.0/sassc-2.4.0/gem_make.out
An error occurred while installing sassc (2.4.0), and Bundler cannot continue.
Make sure that `gem install sassc -v '2.4.0' --source 'https://rubygems.org/'`
succeeds before bundling.
In Gemfile:
sass-rails was resolved to 6.0.0, which depends on
sassc-rails was resolved to 2.1.2, which depends on
sassc
The command '/bin/sh -c bundle install' returned a non-zero code: 5
**下記注目すべきエラー個所
仮想メモリが足りなくて「gem native extension」がbuildできなかったみたい。
// gem native extensionがbuildできなかった
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
// 仮想メモリが使い果たされました:メモリを割り当てることができませんmake:*** [Makefile:237:parser.o]エラー1
virtual memory exhausted: Cannot allocate memory
make: *** [Makefile:237: parser.o] Error 1
# Swapファイルの領域を広げる
ターミナル.
# ホームディレクトリで行います
[ec2-user@ip-172-31-25-189 ~]$ cd
[ec2-user@ip-172-31-25-189 ~]$ sudo dd if=/dev/zero of=/swapfile1 bs=1M count=512
# 下記内容が表示されます
512+0 レコード入力
512+0 レコード出力
536870912 バイト (537 MB) コピーされました、 7.35077 秒、 73.0 MB/秒
# 権限の変更
[ec2-user@ip-172-31-25-189 ~]$ sudo chmod 600 /swapfile1
# Linux のスワップ領域をデバイス上またはファイル上に準備する
[ec2-user@ip-172-31-25-189 ~]$ sudo mkswap /swapfile1
# 以下のように表示される
スワップ空間バージョン1を設定します、サイズ = 524284 KiB
ラベルはありません, UUID=74a961ba-7a33-4c18-b1cd-9779bcda8ab1
# おそらくデバイスやファイルへのページング、スワッピングを有効にしてる
[ec2-user@ip-172-31-25-189 ~]$ sudo swapon /swapfile1
# 細かい内容はまだわかっていません。ご存知の方がいらっしゃればコメント欄へ記入いただけますと幸いです。
[ec2-user@ip-172-31-25-189 ~]$ sudo sh -c 'echo "/swapfile1 none swap sw 0 0" >> /etc/fstab'
__私の場合は、Swapファイルの領域を広げるとエラーでずにbuildできました! __
ご参考になれば!