結論
「docker build を実行する際の書き方」と「Dockerfile の書き方」の 2つ の書き方を双方とも適用する必要がある。
docker build を実行する際の書き方
RAILS_MASTER_KEY という環境変数に渡したいデータが格納済みとする。
$ docker build --secret id=rails_master_key,env=RAILS_MASTER_KEY --tag my_app .
Dockerfile の書き方
(これより前は省略) RUN --mount=type=secret,id=rails_master_key RAILS_MASTER_KEY=$(cat /run/secrets/rails_master_key) (これより後は省略)
ポイント
- Docker イメージ内の
/run/secrets配下に値がファイルとして渡る- ファイル名は
--secretで指定したid=の値である
- ファイル名は
Dockerfileで指定する--mount=type=secretという文字列に含まれる記号は両方とも=(イコール)です- あまりこういう書き方は見ない*1ので念のため
補足
docker build時の--secretの値として、envではなくsrcを指定するとファイルまるごと渡せるDockerfile内の--mount=type=secretのオプション指定にて、`RUN --mount=type=secret,id=my_env1,target=/path/toなどと指定すると渡り先のパスを明示的に指定できる
公式ドキュメント
もろもろ公式ドキュメントを一読するとよいと思います*2。