はじめに
Dockerfileをproduction環境でビルドする際にwebpacker:install
やwebpacker: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が一時的に設定された状態でビルドすることができます。
参考