docker build 時に assets:precompile してコンテナに assets を含めてしまう場合などは RAILS_MASTER_KEY をどうにかして渡す必要があるかと思います。
ARG で渡すことも可能ですが、 docker history
で見ることができてしまうので公式でも秘匿情報を扱う際は推奨していません。
そこで今回は Buildkit の Secret Mount を使って安全に渡したいと思います。
$ echo $RAILS_MASTER_KEY > /tmp/master_key.txt $ DOCKER_BUILDKIT=1 docker build --secret id=master_key,src=/tmp/master_key.txt .
Dockerfile
# syntax = docker/dockerfile:1.0-experimental ... RUN --mount=type=secret,id=master_key,dst=config/master.key,required \ bundle exec rails assets:precompile
dive をつかって最終イメージをみてみると config/master.key
には 0 byte のファイルがあるだけです。
動かす際は ENV['RAILS_MASTER_KEY'] を渡してやれば config/master.key より優先されます。
rails/encrypted_file.rb at master · rails/rails · GitHub