rails 5.0で開発中、ハマったポイントの内の一つ。
AWSのECSでデプロイ試みたところ、コンテナの無限起動状態になったため、色々調べたところ、
「実行に必要な環境変数の指定漏れなどコンテナの内部処理が原因で終了するケース」とのこと。↓
Amazon ECS サービスのスロットリング(コンテナ無限起動)をCloudWatch Eventsで検知する
私の場合、SECRET_KEY_BASEがうまく設定されていなかったのが原因のようでした。
#結論
dotenv-railsというgemを使って管理する
#対応
gemをインストール
Gemfile
gem 'dotenv-rails'
SECRET_KEY_BASEを生成
bash
bundle exec rake secret
上記コマンドで表示された長い文字列を.envファイルに書く。.envファイルはプロジェクト配下につくる。
.env
SECRET_KEY_BASE="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
AWS、ECSでデプロイしている場合は、上記設定後イメージを再度ECRにプッシュ後、新しいタスクのリビジョンを作成し、サービスを更新したら、ちょっと待てば反映される。
#ぼやき
普通にタスク定義のrailsコンテナの環境変数のとこに書いてもOKなはずだが、私の場合なぜかうまくいかなかった(コンテナ無限起動が止まらなかった)いまだ原因不明。。
#参考
Railsで環境変数を設定、取得