Docker tips: COPY и ADD
Иногда, просматривая разные Dockerfile, вы можете видеть инструкции COPY или ADD. Они очень похожи, но в 99% случаев вы должны использовать COPY вместо ADD. И вот почему.
COPY и ADD - это инструкции Dockerfile, которые выполняют похожие действия. Они предоставляют возможность скопировать файлы из указанного места внутрь Docker образа.
COPY позволяет только одно - скопировать файлы или каталоги с машины, где собирается образ, в сам образ. И больше ничего.
ADD позволяет сделать все тоже самое, только эта инструкция поддерживает еще 2 исходных места. Во-первых, вы можете использовать URL в качестве источника. Во-вторых, вы можете распаковать tar файл из источника в образ.
В большинстве случаев, если вы используете URL для загрузки zip файла, то после этого вам необходимо выполнить RUN для его распаковки. Если это так, то лучше использовать RUN для запуска curl и распаковки файла, чем использовать ADD и потом RUN. Это уменьшит размер Docker образа.
ADD же лучше использовать когда у вас есть локальный tar файл и его необходимо распаковать внутрь образа:
ADD file.tar.gz /opt
Если же вы просто копируете файлы, то всегда используйте COPY.