内node_modules
を保ちます。基本的には、安定性の低い命令よりも早く最も安定した命令を実行したいと考えています。以前の実行と同じ画像の変更をもたらす指示は、ENV/ARG命令の問題を除き、再実行しないでください。しかし、命令を実行する必要があると、次の命令はすべてキャッシュ内の命令に関係なく実行されます。
.dockerignoreも役立ちますが、物事が入り込みやすくなることがあります。すべてを無視して何をコピーするかを指定することで、ファイルを反転する方法を採用しました。
ウェブからのフェッチを最小限に抑えるため、私は糸のオフラインキャッシュを使用するのが好きです。これにより、インストールされた依存関係のtarballが保存され、将来のインストールのために再利用されます。毎回フレッシュインストールのnpm rebuild
以上のメリットが得られます(キャッシュが無効になっている場合)。ホームディレクトリにある.yarnrcファイルを使ってオフラインキャッシュを設定しますが、この目的のために、tarballを保存するディレクトリとともにリポジトリに保存します。
あなたのレポにミラーディレクトリをチェックインすることができます。一般的なnpmモジュールのインストールは、まだ20メガバイトの領域にしかありません。
あなたのニーズに合わせてカスタマイズし、ローカルでyarn
を実行すると、糸オフラインミラーにはアプリのインストールに必要なタールボールが含まれます。
.dockerignore
*
!yarn-offline-mirror/
!src/
!package.json
!yarn.lock
!.yarnrc
.yarnrc
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
yarn-offline-mirror "./yarn-offline-mirror"
Dockerfile
ENV HOME /usr/src/
WORKDIR $HOME
# copy the tarballs
COPY ["yarn-offline-mirror", "$HOME/yarn-offline-mirror/"]
# copy files needed for the install
COPY ["package.json", "yarn.lock", ".yarnrc", "$HOME/"]
# the offline flag will mean that an error is raised if any
# module needs to be fetched remotely. It can be removed to allow
# yarn to fetch any missing modules if that was to happen.
RUN yarn --offline --frozen-lockfile --link-duplicates
# copy the rest.. could be further broken up into multiple instructions
# for cache optimisation
COPY . $HOME
CMD npm start
あなたは 'を使用してに見てきました。dockerignore'ファイルをあなたの設定に追加しますか? –
@DanielDアプローチについての詳細は? – Ancinek
これをチェックしてください:https://docs.docker.com/engine/reference/builder/#dockerignore-file。これはあなたを助けることができるかもしれません。これは '.gitignore'ファイルの使用に似ています。外見が役立つなら、私は将来の使用のための簡単な答えを書くでしょう。 –