Docker – How to get docker build to overwrite a file

copycopyingdockerfiles

It seems that docker build won't overwrite a file it has previously copied. I have a dockerfile with several copy instructions, and files touched in earlier COPY directives don't get overwritten by later ones.

A simplified example (although it also happens if the first copy is an entire directory that happens to contain the file in question):

COPY docker/config/file1.yml $BASE/config/thatfile.yml
COPY docker/config/file2.yml $BASE/config/thatfile.yml

After building this, $BASE/config/thatfile.yml contains the contents of file1.yml. Is there a way to get it to contain the contents of file2.yml?

My primary use case here is copying a whole folder of config files, and then replacing select config files for specific builds.

Best Answer

I experienced this too, but after much testing discovered that I had a typo in one of my COPY directives' destination paths.

Double-check where those files are really going

-COPY nginx.conf /etc/ngnix/nginx.conf
+COPY nginx.conf /etc/nginx/nginx.conf