Open18

Docker+RailsをAWSへデプロイするまでの道のり

fsefasfsefas

AWS上にデプロイできる環境を準備する。
ある程度わかるよ〜という人は以下を参考に設定する
【Rails AWS Docker】既存Ruby on Rails + MySQLアプリをDockerで構築し、AWSにデプロイする(1) - Qiita

AWS全くわからないなら以下を参考にデプロイ編①8.EC2へのログインまで設定する。
yum install の部分はとばす。
(下準備編)世界一丁寧なAWS解説。EC2を利用して、RailsアプリをAWSにあげるまで - Qiita

fsefasfsefas

EC2を作成した後にsshでEC2にログインして以下を参考にswapを作成する。
(EC2のt.microインスタンス(無料枠)では bundle installで CPU使用率が100%になってしまい、EC2が動作を受け付けてくれなくなる場合がある)
【Linux】スワップ領域の作成 - Qiita

bundle installのjobsの設定は1もしくは指定しないほうが良い(t.microのCPUは1GBのためすぐにCPU使用率100%になる)

ただしswapを容易に作成するのはよろしくないので注意が必要

まぁ…スワップ使い始めると劇的にパフォーマンスが落ちるので、足りなくなったらメモリ増やすなり、AutoScalingなりでインスタンス数を増やせってことなんだと思いますが...
[Linux] スワップ領域を作成する

ハードディスクへのアクセスは遅いので、スワップアウトが多発するとパフォーマンスの低下に繋がります。どうしてもメモリが足りない場合、SWAP領域を利用します。
Linux|SWAP領域の確認と作成 - わくわくBank

メモリが足りないとコマンド自体がうまく動かなかったり、サービスがメモリ不足でkillされたりすることがあるので、スワップ領域は欲しいところです。
スワップファイル(swap)を作成して有効にする – CentOS/Rocky Linuxサーバ構築術 文具堂

fsefasfsefas

EC2にdockerをインストールする場合は以下のコマンドを使用した

sudo amazon-linux-extras install docker -y

それ以降は以下を参考に dockerの起動、EC2起動時のdocker自動起動、docker-composeのインストールを行った
【Rails AWS Docker】既存Ruby on Rails + MySQLアプリをDockerで構築し、AWSにデプロイする(6) - Qiita

ちなみに私の場合は以下のように実行したらインストールされずdockerコマンドが使えなかった。

$ sudo yum install -y docker
#読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd
#amzn2-core                                                                           | 3.7 kB  00:00:00     
#パッケージ docker は利用できません。
#エラー: 何もしません

#docker is available in Amazon Linux Extra topic "docker"

#To use, run
# sudo amazon-linux-extras install docker

#Learn more at
#https://aws.amazon.com/amazon-linux-2/faqs/#Amazon_Linux_Extras
$ docker -v
#-bash: docker: コマンドが見つかりません
fsefasfsefas

何回かdockerコマンドを実行していたら以下のログが表示された。

ERROR: Error processing tar file(exit status 1): write /vendor/bundle/ruby/2.7.0/cache/faker-2.19.0.gem: no space left on device

以下を参考にEC2のボリューム(EBS)の割り当てを増加する。
ちなみに1回ボリュームを増量してすぐに2回目のボリュームの増量はできない(最低6時間必要ぽい)
EC2 インスタンスの EBS ボリュームを拡張してみる | Wedding Park CREATORS Blog
原因は以下が分かりやすい
no space left on deviceとなった時の対応方法 - Qiita

fsefasfsefas