Difference between COPY and ADD in a Dockerfile
Learn the difference between copy and add instructions in dockerfile.To start with, both copy and add instructions are used to copy files from a source into the docker image.
ADD
ADD instruction copies everything from the source including the file system metadata to the destination.
Syntax
ADD <src> … <dest>
When you copy a compressed file using ADD, it automatically extracts the compressed file’s content into the destination if the compressed file is of a recognized compression format (zip, xz, bzip, gzip).
Examples
ADD http://ngrok.co/installer.file.tar.gz /ngroktemp ADD /home/installer.zip /dockerhome/installer
COPY
COPY command copies the source to the destination in the same format the source is.
Syntax
COPY <src> … <dest>
It doesn’t work with URLs and it doesn’t extract compressed files but only copies them.
Example
COPY /home/inputs/ /dockerhome/inputs
As a final note, always prefer using COPY as it’s more transparent that ADD but at the end of the day it depends on what you want to do.