結論
「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。