Amazon ECS 上で稼働する Node.js アプリケーションの Docker イメージをビルドするため、AWS CodeBuild プロジェクトを運用しています。buildspec.yml 内で docker build コマンドを実行していますが、現在の Dockerfile はアプリケーションコード全体を COPY してから RUN npm install を実行する構成のため、package.json に変更がなくても毎回 npm install(約 8 分)が実行されています。ビルド時間の短縮とコスト最適化を図る上で最も効果的な改善策はどれですか?
DLC を有効化すると CodeBuild は Docker ビルドレイヤーを S3 に保存・再利用します。Dockerfile で package*.json のコピーと npm install をアプリコードの COPY より前に配置することで、package.json 未変更時は npm install レイヤーがキャッシュヒットして実行がスキップされます。 選択肢A は npm ci が毎回 node_modules を削除するため S3 キャッシュ効果が限定的です。 選択肢C のソースキャッシュは Git チェックアウト時間の短縮であり npm install とは無関係です。 選択肢D の BuildKit マウントキャッシュはビルド間で永続化されず、DLC との組み合わせなしには効果がありません。