0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Dockerで構築したRailsサービスのproductionモード起動方法

Posted at

なぜ記事を書こうと思ったか

サービス開発中に本番環境のテストをする状況が発生し、Railsのproductionモードを起動する必要があったのですが、少し苦戦してしまった為、備忘録として残します。

関連ファイル

  • config/credentials.yml.enc
  • config/master.key rails newを実行した事がない場合、作成されていません。今回作成する手順も記載します。
  • docker-compose.yml
  • Dockerfile
  • config/database.yml
  • config/environments/production.rb

実行手順

※元々のconfig/credentials.yml.encに対応するmaster.keyを所持している場合、2~5の手順は飛ばして下さい。

1.ターミナルにてdocker-compose up -dでサーバーを起動し、docker-compose exec app bashでコンテナに入る。

2.コンテナにてEDITOR=vi rails credentials:editを実行し、config/master.keyを生成する。

スクリーンショット 2022-05-06 16 46 01

3.config/credentials.yml.encを現在作業しているディレクトリ以外のディレクトリに移動する。

4.コンテナにてEDITOR=vi rails credentials:editを実行し、config/credentials.yml.encを再作成。
(今回作成したmaster.keyでは、元々のconfig/credentials.yml.encを複合することができない為、再生成)

5.再生成されたconfig/credentials.yml.encファイルがvimで開かれている為、secret_key_baseに値が入っている事を確認後、:qでvimを閉じる。

6.docker-compose.ymlのRailsサービスのコンテナにrails sコマンドを使用してる箇所がある為、-e productionを追記する。

7.Dockerfileにrails sコマンドを使用してる箇所に"-e", "production"を追記する。

8.config/database.ymlのproductionの記載をdevelopmentと同様の値にする。
※今回の記事では、テストの為の記事なので簡易にproductionモードのdatabaseの設定をしています。

9.ターミナルのコンテナをexitし、docker-compose downでサーバーを終了させる。

10.ターミナルでdocker-compose up -dを行い、docker-compose exec app bashでコンテナに再度入る。

11.config/environments/production.rbにあるconfig.cache_classesの値をfalseに変更する。

スクリーンショット 2022-05-06 17 28 36

上記の手順でproductionモードで操作する事ができるようになります。

動作確認後手順(developmentモードに戻す方法)

  1. 今回作成したconfig/credentials.yml.encとconfig/master.keyを削除する。

  2. 実行手順の3で別ディレクトリに移動したcredentials.yml.encを作業しているディレクトリのconfigディレクトリ配下に戻す。

  3. docker-compose.yml、Dockerfile、config/database.yml、config/environments/production.rbで変更した箇所を元の状態に戻す。

  4. .DS_Storeファイルが生成されている場合は、削除する。

最後に

 間違っている箇所やわからない箇所があれば、ぜひコメントしていただけると嬉しいです。
 読んで頂きありがとうございました。

0
3
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
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?