基本的に私はexternal
ディレクトリにコピーされているgradleビルドのthirdparty jarファイルをたくさん持っています。
これらのジャーはほとんど変化しませんが、Dockerは何とかそのレイヤーをキャッシュしたくありません。ドッカー - 追加されたディレクトリをキャッシュする方法?
マイドッカーファイルはかなり単純化され:
RUN mkdir -p /opt/app
WORKDIR /opt/app
COPY app.jar .
COPY project /opt/app/project
COPY external /opt/app/external
EXPOSE 2550 7000
そのexternal
ディレクトリ内のすべてのファイルjar
や大きさのmd5sum
が同一です。 stat
は、これらのファイルでinode
が異なっていることを示しています(もちろんファイル時間が必要ですが、ドッカーのドキュメントによるとmtimeは比較時に無視されます)。
しかし、私は、ドッキングウィンドウの歴史を見れば、私は層がキャッシュされていないことを参照してください。
タグ:テスト-1
1be1e9a7084b 17 hours ago /bin/sh -C#(nop) EXPOSE 2550/tcp 7000/tcp 0B
e593cf804634 17 hours ago /bin/sh -C#(nop) COPY dir:b2ed14f41affcee... 60.4MB
a55be55e6e68 17 hours ago /bin/sh -C#(nop) COPY dir:f1abbe11a6a64fe... 566kB
e8823ec84dfb 17 hours ago /bin/sh -C#(nop) COPY file:ba5ef09e42eda4... 523kB
041f6f6957b5 17 hours ago /bin/sh -C#(nop) WORKDIR /opt/app 0B
15e4c78e545c 17 hours ago /bin/sh -c mkdir -p /opt/app 0B
タグ:テスト-2
aacb13926d18 17 hours ago /bin/sh -C#(nop) EXPOSE 2550/tcp 7000/tcp 0B
7ebe12849fad 17 hours ago /bin/sh -C#(nop) COPY dir:b2ed14f41affcee... 60.4MB
4bf898283d11 17 hours ago /bin/sh -C#(nop) COPY dir:f1abbe11a6a64fe... 566kB
886630b2a05a 17 hours ago /bin/sh -C#(nop) COPY file:5ad60a31d9e72d... 523kB
041f6f6957b5 17 hours ago /bin/sh -C#(nop) WORKDIR /opt/app 0B
15e4c78e545c 17 hours ago /bin/sh -c mkdir -p /opt/app 0B
ので、どのように私はドッカーに、決して変わらないサードパーティのジャーとレイヤーを再利用することができますか? ビルド後に毎回外部ディレクトリが再作成されるためですか?他の方法はありますか?
ええ、私は今、おかげです! – gerasalus