Docker: COPY не может найти файлы в локальном каталоге, в котором запускается `docker build` - PullRequest
0 голосов
/ 11 декабря 2019

в каталоге с префиксом /home/gitlab-runner/builds/, есть файл example.jar и Dockerfile, в Dockerfile есть следующие инструкции:

COPY example.jar /app

Я запускаю

  docker build -t image_name ./

тогда я получаю следующую ошибку:

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

почему COPY не может найти файл example.jar из каталога с префиксом /home/gitlab-runner/builds/? как прыгает странный путь /var/lib/docker..? как с этим бороться? спасибо!


    [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

1 Ответ

2 голосов
/ 11 декабря 2019

[копируя мой ответ из-за ошибки сервера, я не понял, что этот вопрос был перекрестно опубликован]

COPY example.jar /app

Эта команда ожидает example.jar в корне контекста сборки. Контекст сборки является последним аргументом docker build, в данном случае . или текущего каталога. Из вывода ls -al вы не сохраняете этот jar-файл в каталоге, а docker сообщает вам, что команда COPY не может найти example.jar в контексте сборки. Если он находится в одном из других подкаталогов, вам нужно обновить команду COPY с этим расположением.


Чтобы отладить проблемы с контекстом сборки, вы можете собрать и запустить следующий Dockerfile:

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

Это скопирует весь контекст сборки в образ и выведет список содержимого с помощью команды find при запуске контейнера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...