cp: not stat 'Pipfile': такого файла или каталога в сборке Docker нет - PullRequest
0 голосов
/ 21 октября 2019

У меня есть проектная директория, подобная этой:

docker и Backend - братья и сестры

Я захожу в папку Docker и набираю docker build ./

Теоретически, основываясь насоответствующая часть моего Dockerfile, я должен перейти в родительский каталог и в Backend

ARG PROJECT_DIR=../Backend
WORKDIR $PROJECT_DIR
RUN cp Pipfile Pipfile.lock

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

cp: cannot stat 'Pipfile': No such file or directory

Я также пробовал COPY, и это нелибо работать.

Почему я не могу скопировать мой Pipfile в Pipfile.lock? Он существует в каталоге Backend.

Ответы [ 2 ]

0 голосов
/ 21 октября 2019

Вы должны понимать, что две вещи:

  1. Сборка Docker фактически создает экземпляр контейнера с использованием базового образа (FROM), вносит изменения, указанные в Dockerfile, и создает новый образ. из конечного состояния этого контейнера.
  2. Контейнер Docker имеет изолированную файловую систему. Вы не сможете получить доступ к внешним файлам из него, если не настроите том (а тома недоступны в процессе сборки Dockerfile / docker

Итак, чтобы поместить файлы в образ Docker, вы используете команду COPY. Первый аргумент - это исходный путь к файлу из каталога вашего Dockerfile. Внешние файлы недоступны из соображений безопасности.

Если вам нужен доступ к файлу вне каталога Dockerfile, вы, вероятно, поместили его в неправильное место.

0 голосов
/ 21 октября 2019

Docker - это клиентское (docker) <> серверное приложение (dockerd, работающее как демон). Когда вы набираете docker build..., клиент сжимает контекст (указанный в вашем примере как ./) и отправляет его на сервер (который в большинстве случаев работает на той же машине, но это действительно не имеет значения). Это означает, что все, что не в контексте, недоступно для процесса сборки (который выполняется сервером).

Итак, теперь вы можете видеть, почему вещи в «братском» каталоге недоступны, они не являются частью контекста и не отправляются демону для сборки.

Дополнительная информация здесь: https://docs.docker.com/engine/reference/commandline/build/#extended-description

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