LoginSignup
0
0

More than 3 years have passed since last update.

docker+rails(ver5.2)での本番環境の起動と生じたエラー

Last updated at Posted at 2020-12-26

初めての投稿になりますので、間違いなどあればご指摘ください.
また、今回の投稿はdockerでのrails5.2の本番環境の起動の助けになればと思います。

環境

  • rails ver 5.2
  • docker

記事の内容

主に4つのパートに分かれています。

  • railsでの本番環境にするにはどのように設定する必要があるのか
  • dockerでの設定方法
  • build後の起動時のエラー
  • 解決方法

railsで本番環境にするにはどのように設定する必要があるのか

まず、rails5.2での本番環境で起動にするには主に以下の四つが必要になります
1. database.ymlやデータベースでのproduction環境を設定する
2. SECRET_KEY_BASEがcredentials.yml.encに存在するか確認
3. アセットプリコンパイルを行う
4. サーバーの起動

dockerでの設定方法

dockerでは起動に必要な部分を記述して起動を行います

データベース関連

database.ymlを設定やDB接続などを設定します。

database.yml
production:
  <<: *default
  database: 
  username: 
  password: 

credentials.yml.encでのSECRET_KEY_BASの確認

以下のコマンドをdockerで走らせることができれば確認できると思います

EDITOR=vim rails credentials:edit

私はdocker-composeを利用していたので以下のコマンドで確認しています

docker-compose run -e EDITOR=vim web rails credentials:edit

アセットプリコンパイル

railsのassetsファイルをプリコンパイルする必要があります

RAILS_ENV=production bundle exec rails assets:precompile

dockerに記述する部分

以下の記述を追加して起動を行いました

Dockerfile

ENV RAILS_ENV="production"

RUN SECRET_KEY_BASE=production bundle exec rails assets:precompile

起動時の生じたエラー

さて起動をしてみると以下のエラーが出てきました。

`validate_secret_key_base': Missing `secret_key_base` for 'production' environment, set this string with `rails credentials:edit` (ArgumentError)

内容としては「secret_key_base値が見つからないため、起動できません」となっています。 
そこでネット上で検索してエラーを解決しようとしていましたが解決できていませんでした。

  • SECRET_KEY_BASEの値の確認
  • production.rbでの設定の変更
  • アセットプリコンパイルのエラーが原因なのかを調査

エラーの解決策

以下のサイトを試すと解決しました
https://qiita.com/laser_beam/items/b4abdfed09fd987308fb

具体的にはcredentials.yml.encファイルのSECRET_KEY_BASEに対してスペースを入れると解決しました。
before

credentials.yml.enc
secret_key_base: *****************************

after

credentials.yml.enc
 secret_key_base: *****************************
↑スペースが入ります

原因はわかりませんが、どうしても解決しない時は試してみるといいかもしれません。

終わりに

予想外の方法で解決したので、試せることは試すことが大切だと思いました。

参考にした記事

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0