Ecco una rapida panoramica delle differenze tra COPY e ADD:
- COPY
- E' utilizzato per copiare file e directory dal contesto di build (la directory in cui si trova il Dockerfile e i file/directory ad esso associati) al filesystem del container
- E' semplice e trasparente, copia i file così come sono, mantenendo tutti i loro metadati, senza alcuna elaborazione aggiuntiva
- ADD
- Ha tutte le funzionalità di COPY, ma aggiunge anche la capacità di gestire URL come sorgenti (permettendo di scaricare file direttamente da un URL nel container) e di decomprimere automaticamente archivi compressi nel filesystem del container
- A causa della sua maggiore complessità e delle funzionalità aggiuntive, ADD è meno trasparente rispetto a COPY e può avere comportamenti inaspettati (ad esempio, se non si desidera la decompressione automatica).
Codice: Seleziona tutto
COPY scripts/*.jar /opt/scripts/
COPY themes/ /opt/themes/
Codice: Seleziona tutto
ADD scripts/*.jar /opt/scripts/
ADD themes/ /opt/themes/
Dunque COPY è spesso la scelta preferita per la copia di file locali perché è più diretto e meno incline a comportamenti inaspettati.