Docker从第一个ADD重新构建映像

时间:2018-10-25 22:46:10

标签: docker

即使我没有做任何更改,Docker也会从第一个ADD重新构建我的映像,每次

这很简单:

FROM alpine:3.8

RUN apk add --no-cache openjdk8-jre

RUN mkdir /cassandra

ADD https://archive.apache.org/dist/cassandra/3.9/apache-cassandra-3.9-bin.tar.gz /tmp/cassandra.tar.gz

RUN tar -xf /tmp/cassandra.tar.gz -C /cassandra && rm /tmp/cassandra.tar.gz

EXPOSE 9042

每次我构建时,它都会继续运行ADD及其之后的所有内容。 ADD大约需要一段时间,所以非常困难。

2 个答案:

答案 0 :(得分:0)

Docker不确定链接是否已更改,它无法检查请求的内容。 (我的意思是,它可以检查内容的哈希,但仍然必须下载文件)。您应该自己下载文件,然后将其直接复制到内部版本中。

一些讨论:https://github.com/moby/moby/issues/3672#issuecomment-63335989

答案 1 :(得分:0)

解决方案是使用

apk add --no-cache wget && \                                                                                                                                                                                                                                                                                            
    wget your_website.html && \                                                                                                                                                                                                        
    ..
    Do some stuff
    ..                                                                                                                                                                                                                                                                                       
    apk del --no-cache wget

这完全满足了 I 的需求。每次都有ADD重新下载,根据@maxm的链接,我们似乎无能为力