環境
Ruby 2.7.1
Rails 6.0.3.4
CircleCIを使ってECSへデプロイ時に以下のようなエラーが発生
rake aborted!
ArgumentError: Missing `secret_key_base` for 'production' environment, set this string with `rails credentials:edit`
結論
Railsのmaster.keyをCircleCIの環境変数に設定しconfig.ymlとDockerfileに設定した環境変数を渡す事で解決しました。
Step1
CircleCI環境変数設定
nameをRAILS_MASTER_KEY
とし、
valueにmaster.key
の値を入力
Step2
Dockerfileに追記
Dockerfile
# 追記
ARG RAILS_MASTER_KEY
ENV RAILS_MASTER_KEY ${RAILS_MASTER_KEY}
Step3
CircleCIの設定
.circleci/config.yml
- aws-ecr/build-and-push-image:
# 追記
extra-build-args: '--build-arg RAILS_MASTER_KEY=${RAILS_MASTER_KEY}'
extra-build-argsで設定する事でCircleCI内で設定した環境変数をRails側でENVとして受け取る事が出来るとのことです。