1
基本上我有一堆来自Gradle构建的第三方jar文件,它们被复制到external
目录中。
那些罐子几乎不会改变,但Docker不知何故不想缓存该图层。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
所有jar
文件和大小在external
目录的md5sum
是相同的。 stat
只显示inode
在这些文件上有所不同(当然期待文件时间,但根据docker文档,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
所以我该如何强制docker重复使用那些几乎不会改变的第三方瓶子的图层? 是否因为每次构建后都重新创建外部目录?有没有其他方法?
恩,我现在感觉很蠢,谢谢! – gerasalus