Устраните ошибку пути каталога в команде COPY в файле Docker - PullRequest
1 голос
/ 24 марта 2019

Я использую команду COPY в моем файле Docker поверх Ubuntu 16.04.Я получаю сообщение об ошибке, поскольку такого файла или каталога нет, хотя каталог присутствует.В приведенном ниже файле Docker я хочу скопировать каталог «auth», присутствующий в каталоге рабочего пространства, в образ Docker (по пути / home / ubuntu), а затем построить образ.

FROM ubuntu:16.04
RUN apt-get update
COPY /home/ubuntu/authentication/workspace   /home/ubuntu
WORKDIR /home/ubuntu/auth

1 Ответ

0 голосов
/ 24 марта 2019

Команда Dockerfile COPY может ссылаться только на файлы в контексте - текущее местоположение Dockerfile, также известное как ., поэтому у вас есть несколько вариантов:

  1. , еслиможно скопировать содержимое каталога / home / ubuntu / authentication / workspace / куда-нибудь внутри вашего проекта перед сборкой (так что теперь он будет включен в ваш контекст Dockerfile и вы сможете получить к нему доступ через COPY ./path/to/content /home/ubuntu), это может быть здорово,но иногда вы этого не хотите.

  2. вместо копирования каталога, привяжите его к вашему контейнеру через том:

при запускеВ контейнер добавьте опцию -v:

docker run [....] -v /home/ubuntu/authentication/workspace:/home/ubuntu [...]

, помните, что том спроектирован так, что любое изменение, внесенное вами в директорию контейнера (/ home / ubuntu), повлияет на связанный каталог на стороне вашего хоста (/home / ubuntu / аутентификация / рабочая область) и наоборот.

я нашел что-то сверх здесь : этот парень заставляет Dockerfile принять его контекст - он сидит в каталоге / home / ubuntu / authentication / workspace / и запускается там

docker build . -f /path/to/Dockerfile

, поэтому теперь внутри своего Dockerfile он может ссылаться на / home / ubuntu / authentication / workspace как свой контекст (.)

...