Ensure Using 'ADD' instead of 'COPY' for copying files from filesystem
Although ADD
and COPY
are functionally similar, generally speaking, COPY
is preferred. That's because it's more transparent than ADD
. COPY
only supports the basic copying of local files into the container, while ADD
has some features (like local-only tar extraction and remote URL support) that are not immediately obvious. Consequently, the best use for ADD
is local tar file auto-extraction into the image, as in ADD rootfs.tar.xz /
.
Risk Level: informational
Platform: Docker
Spectral Rule ID: DOCKR001
REMEDIATION
If you have multiple Dockerfile steps that use different files from your context, COPY
them individually, rather than all at once. This ensures that each step's build cache is only invalidated (forcing the step to be re-run) if the specifically required files change.
ADD https://example.com/big.tar.xz /usr/src/things/
RUN tar -xJf /usr/src/things/big.tar.xz -C /usr/src/things
RUN make -C /usr/src/things all
- ADD requirements.txt /tmp/
+ COPY requirements.txt /tmp/
RUN pip install --requirement /tmp/requirements.txt
Read more:
Updated over 1 year ago