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 занимает некоторое время, поэтому это очень сложно.
Docker не уверен, изменилась ли ссылка или нет, у него нет возможности проверить содержимое запроса. (Я имею в виду, что он может проверить хэш содержимого, но ему все равно придется загрузить файл). Вам следует скачать файл самостоятельно и напрямую скопировать его в сборку.
Некоторое обсуждение: https://github.com/moby/moby/issues/3672#issuecomment-63335989
Решение состоит в том, чтобы использовать
apk add --no-cache wget && \
wget your_website.html && \
..
Do some stuff
..
apk del --no-cache wget
Это в точности соответствует тому, что требовалось я. ADD перезагружается каждый раз, и, судя по ссылке @ maxm, мы ничего не можем с этим поделать.
См. github.com/moby/moby/issues/12361