In a Dockerfile, I have
COPY . .
I want to exclude an entire directory, in my case, node_modules directory.
Something like this:
COPY [all but **/node_modules/**] .
Is this possible with Docker?
In a Dockerfile, I have
COPY . .
I want to exclude an entire directory, in my case, node_modules directory.
Something like this:
COPY [all but **/node_modules/**] .
Is this possible with Docker?
Adding .dockerignore works for me. One additional point Those who are trying this solution on Windows , windows will not let you create .dockerignore file (as it doesn't by default allows creating file starting with .)
the trick to that is mentioned here : https://www.hanselman.com/blog/HowToCreateAFileWithADotPrefixInWindowsExplorer.aspx
which is include an ending dot also, like :
.dockerignore.
and hit enter ( provided you have enabled view extension options from folder options )Create file
.dockerignore
in your docker build context directory (so in this case, most likely a directory that is a parent to node_modules) with one line in it:**/node_modules
although you probably just want:
node_modules
Info about dockerignore: https://docs.docker.com/engine/reference/builder/#dockerignore-file
For those who can't use a .dockerignore file (e.g. if you need the file in one COPY but not another):
Yes, but you need multiple COPY instructions. Specifically, you need a COPY for each letter in the filename you wish to exclude.
Continuing until you have the full file name, or just the prefix you're reasonably sure won't have any other files.