Docker記述難易度 標準

状況

npm の認証トークンをビルド中だけ使い、イメージには残したくない。docker build --secret id=npmrc,src=$HOME/.npmrc . でビルドする。

空欄に入るマウントの種類を書いてください。

RUN --mount=type=____,id=npmrc,target=/root/.npmrc npm ci

正答

正答secret

解説

ビルド時のシークレットは docker build の --secret で渡し、Dockerfile では RUN --mount=type=secret で受け取る。マウントされたファイルはその RUN 命令の実行中だけ見え、イメージの層には書き込まれない。ARG や ENV でトークンを渡す方法は値が最終イメージに残るため、公式ドキュメントも秘密情報の受け渡しには不適切としている。COPY して後で消す方法も前の層に残る。ここでは target で .npmrc の位置にマウントしているので、npm ci はふだんどおり設定ファイルからトークンを読める。

参考: docs.docker.com

dockerfilesecretbuild

この問題を含む Docker のテストを制限時間つきで解く

Dockerクイズへ