LoginSignup
0
0

【Docker】ArgumentError: Missing `secret_key_base` for 'production' environment, set this string with `bin/rails credentials:edit`の解消法

Posted at

はじめに

Dockerfileをproduction環境でビルドする際にwebpacker:installwebpacker:compileをする場合、config/secrets.ymlとconfig/master.keyの情報が必要になってきます。

私はmaster.keyファイルを.dockerignoreファイルに含めていた為エラーが発生しました。
master.keyの情報をイメージに含めずにビルドする方法に少し躓いたので、解決法を紹介します。

環境

Ruby 3.2.1
Rails 6.1.7.3
Docker version 23.0.5
MacOS 13.3.1

Dockerfile

方法は複数あるそうですが、今回はdocker buildkitを使用します。buildkitはMacOSとwindowsに対しては、docker desktopをインストールしていればデフォルトで入っています。
以下のようにすることで、ビルド時にmaster.keyの値を使用しながら、最終的なイメージにはmaster.keyを含めないようにすることができます。

Dockerfile
RUN --mount=type=secret,id=master_key,target=config/master.key,required=true \
    bundle exec rails webpacker:install
コンソール
docker buildx build --secret id=master_key,src=./config/master.key .
  • コンソールでid=master_key,src=./config/master.keyとすることで、Dockerfile内のconfig/master.keyに、src=./config/master.keyが一時的に設定された状態でビルドすることができます。

参考

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