Docker層とDockerFileの最適化
私が最近遭遇した1つの小さな問題は、実行するために遅いビルド時間があったプロジェクトでした.私が気が付いたことは、私がHTMLを変えるだけであるならば、なぜ私が1000 + NPMパッケージをダウンロードする必要があるかについて、設定変更とHTML変化のためにインストールされるNPMパッケージでした?狂気
Dockerは、特定の方法でDockerFileが書き込まれた場合のみコマンドをキャッシュできます.次のシナリオを実行します.
コピーを2つのコマンドに分割することによって、我々はキャッシングを利用して、NPMパッケージを修正しないビルドのためにビルド時間を速めることができます:
この1つのライン
それはすべての人々です!
Dockerは、特定の方法でDockerFileが書き込まれた場合のみコマンドをキャッシュできます.次のシナリオを実行します.
FROM node:9
COPY /src /src
RUN npm install
RUN npm build
Dockerは各コマンドをキャッシュし、Layerを作成できます.Dockerがそのコマンドに対してファイルが変更されていないことを検出すると、レイヤがキャッシュされます.コピーを2つのコマンドに分割することによって、我々はキャッシングを利用して、NPMパッケージを修正しないビルドのためにビルド時間を速めることができます:
FROM node:9
COPY /src/package*.json /src
# Docker will cache these 2 layers if package.json and package.lock.json are unmodified
RUN npm install
# copy the rest of our code and run a fresh build
COPY /src /src
RUN npm build
1行を追加するだけで、私たちはビルドのほとんどをスピードアップすることができます-私のシナリオでは、ローカルビルドとCIサーバービルド(NPMパッケージは成熟したプロジェクトではほとんど変更されませんでした).この1つのライン
Dockerfile
の変更は私たちのチームをビルドごとに数分保存しましたそれはすべての人々です!
Reference
この問題について(Docker層とDockerFileの最適化), 我々は、より多くの情報をここで見つけました https://dev.to/stebaker92/docker-layers-and-optimizing-your-dockerfile-49g7テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol