状況
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
この問題を含む Docker のテストを制限時間つきで解く
Dockerクイズへ