lily
lily

Reputation: 565

Docker: COPY can't find files in local directory where the `docker build` runs

in a directory with prefix /home/gitlab-runner/builds/, there is a example.jar file and a Dockerfile, in the Dockerfile, there are statements as below:

COPY example.jar /app

I run

  docker build -t image_name ./

then I get the following error:

COPY failed: stat /var/lib/docker/tmp/docker-builder457658077/example.jar: no such file or directory

why can't COPY find the example.jar from within the directory with prefix /home/gitlab-runner/builds/? how does the strange /var/lib/docker.. path jumps in? how to deal with this? thanks!


    [root@koala 53bdd1747e3590f90fcc84ef4963d4885711e25f]# pwd
    /home/gitlab-runner/builds/pica/eureka/53bdd1747e3590f90fcc84ef4963d4885711e25f
    [root@koala 53bdd1747e3590f90fcc84ef4963d4885711e25f]# ls -al
    total 52068
    drwxrwxr-x 5 gitlab-runner gitlab-runner     4096 Dec 11 15:23 .
    drwxrwxr-x 4 gitlab-runner gitlab-runner     4096 Dec 11 11:35 ..
    -rw-rw-r-- 1 gitlab-runner gitlab-runner       17 Dec 11 11:35 APPLICATION_VERSION
    -rw-rw-r-- 1 gitlab-runner gitlab-runner      644 Dec 11 11:35 docker-compose.yml
    -rw-rw-r-- 1 gitlab-runner gitlab-runner      568 Dec 11 15:23 Dockerfile
    drwxrwxr-x 8 gitlab-runner gitlab-runner     4096 Dec 11 11:35 .git
    -rw-rw-r-- 1 gitlab-runner gitlab-runner      322 Dec 11 11:35 .gitignore
    -rw-rw-r-- 1 gitlab-runner gitlab-runner     2438 Dec 11 11:35 .gitlab-ci.yml
    -rw-rw-r-- 1 gitlab-runner gitlab-runner 53271183 Dec 11 11:35 example.jar
    -rw-rw-r-- 1 gitlab-runner gitlab-runner     1043 Dec 11 11:35 pom.xml
    drwxrwxr-x 4 gitlab-runner gitlab-runner     4096 Dec 11 11:35 src
    drwxrwxr-x 8 gitlab-runner gitlab-runner     4096 Dec 11 11:35 target

Upvotes: 3

Views: 8218

Answers (1)

BMitch
BMitch

Reputation: 264026

[ copying my answer from server fault, didn't realize this question was cross-posted ]

COPY example.jar /app

This command expects an example.jar in the root of your build context. The build context is the last argument to docker build, in this case ., or the current directory. From the ls -al output, you do not file this jar file in the directory and docker is telling you the COPY command cannot find the example.jar in the build context. If it is in one of the other sub directories, you'll need to update the COPY command with that location.


To debug issues with the build context, you can build and run the following Dockerfile:

FROM busybox
COPY . /build-context
WORKDIR /build-context
CMD find .

That will copy the entire build context into an image and list the contents out with a find command when you run the container.

Upvotes: 5

Related Questions