Posts

Showing posts with the label Dockerfile

Building Dockerfile Fails When Touching A File After A Mkdir

Image
Answer : Looking at https://registry.hub.docker.com/u/library/jenkins/, it seems that /var/jenkins_home is a volume. You can only create files there while the container is running, presumably with a volume mapping like docker run ... -v /your/jenkins/home:/var/jenkins_home ... The docker build process knows nothing about shared volumes. This is currently investigated in docker/docker/issues/3639, and summarized in this comment: Okay, I did little research and it seems that volume is non-mutable between Dockerfile instruction . Here even smaller Dockerfile for testing: FROM busybox RUN mkdir /tmp/volume RUN echo "hello" > /tmp/volume/hello VOLUME ["/tmp/volume/"] RUN [[ -f /tmp/volume/hello ]] RUN rm /tmp/volume/hello RUN [[ ! -e /tmp/volume/hello ]] On each instruction we create new volume and copy content from original volume . Update April 2019: Use DOCKER_BUILDKIT=1 The new builder does not exhibit this behavior. Example...

COPY With Docker But With Exclusion

Answer : 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. COPY [^n]* # All files that don't start with 'n' COPY n[^o]* # All files that start with 'n', but not 'no' COPY no[^d]* # All files that start with 'no', but not 'nod' Continuing until you have the full file name, or just the prefix you're reasonably sure won't have any other files. In my case, my Dockerfile contained an installation step, which produced the vendor director...