Я хочу создать образ докера. Это мой рабочий каталог: Dockerfile.in test.json test.py
А это мой Dockerfile:
COPY ./test.json /home/test.json
COPY ./test.py /home/test.py
RUN python test.py
Когда я запускаю эту команду:
docker build -f Dockerfile.in -t 637268723/test:1.0 .
Это дает мне эту ошибку:
`Step 1/5 : COPY ./test.json /home/test.json
---> Using cache
---> 6774cd225d60
Step 2/5 : COPY ./test.py /home/test.py
COPY failed: stat /var/lib/docker/tmp/docker-builder428014112/test.py:
no such file or directory`
Может кто-нибудь мне помочь?
python
docker
dockerfile
docker-image
ЭдоБен
источник
источник
COPY
оператор в своем Dockerfile, и у меня были те же проблемы. ПробовалCOPY /host_file /container_folder
(без точки), и все получилось. После этого попробовал первый,COPY
который у вас есть, и он работал нормально (черт возьми?)! Одна вещь, которую я сделал по-другому, - это удалить все изображения (кеш), которые Docker генерирует в процессе сборки. Я предполагаю, что на этих промежуточных образах все еще может храниться мусор (я использую Docker 18.09.5). Взгляните на SO или GitHub, ТАК МНОГО проблем с копированием host -> container. Плохой знак.Ответы:
Вы должны поместить эти файлы в один каталог с Dockerfile.
источник
.dockerignore
файл!Проверьте, есть ли
.dockerignore
файл, если есть, добавьте:источник
.dockerignore
файл в пути сборки, файлы или каталог, которые вы хотите скопировать, могут быть в списке игнорируемых файлов!источник
Удаление
./
из исходного пути должно решить вашу проблему:источник
Я тоже столкнулся с тем же, я переместил свой файл докеров в корень проекта. тогда это сработало
источник
Мне пришлось использовать следующую команду, чтобы начать сборку:
docker build .
источник
В вашем случае удаление ./ должно решить проблему. У меня был другой случай, когда я использовал каталог из родительского каталога, и докер может получить доступ только к файлам, находящимся ниже каталога, в котором присутствует Dockerfile, поэтому, если у меня есть структура каталогов / root / dir и Dockerfile / root / dir / Dockerfile
Я не могу скопировать, сделайте следующее
источник
Это может помочь кому-то другому, столкнувшемуся с аналогичной проблемой.
Вместо того, чтобы помещать файл в тот же каталог, что и Dockerfile, создайте каталог и поместите файл для копирования, а затем попробуйте.
источник
Другая потенциальная причина заключается в том, что докер по умолчанию не переходит по символическим ссылкам (т.е. не использует
ln -s
).источник
В моем случае это была строка комментария, которая испортила команду COPY
Я удалил комментарий после команды COPY и поместил его в специальную строку над командой. На удивление это решило проблему.
Неисправная команда Dockerfile
COPY qt-downloader . # https://github.com/engnr/qt-downloader -> contains the script to auto download qt for different architectures and versions
Рабочая команда Dockerfile
# https://github.com/engnr/qt-downloader -> contains the script to auto download qt for different architectures and versions COPY qt-downloader .
Надеюсь, это кому-то поможет.
источник
Убедитесь, что контекст, в котором вы создаете свое изображение, установлен правильно. Вы можете установить контекст при построении в качестве аргумента. Пример:
docker build -f ./Dockerfile ..
где ".." - это контекст в этом примере.источник
При использовании Docker составлять файлы, публиковать, публикует в obj / Docker / Publish. Когда я скопировал туда свои файлы и указал свой Dockerfile в этот каталог (как сгенерированный), он работает ...
источник
Докер ищет файл в текущем каталоге, т.е. если ваша команда
JAR-файл xyz должен находиться в каталоге current / target - здесь current - это место, где у вас находится файл докера. Итак, если у вас есть docker в другом каталоге. его лучше перенести в основной каталог проекта и иметь прямой путь к банке, добавляемой или копируемой в изображение.
источник
У меня была такая же проблема с файлом .tgz.
Дело было просто в местонахождении файла. Убедитесь, что файл находится в том же каталоге, что и Dockerfile.
Также убедитесь, что каталог файла .dockerignore не исключает шаблон регулярного выражения файла.
источник
В моем случае мне пришлось поместить все мои файлы проекта в подкаталог
Потом я скопировал файлы на его лад
источник
У меня была такая ошибка при попытке создать образ докера и отправить его в реестр контейнеров. Внутри моего файла докеров я попытался скопировать файл jar из целевой папки и попытаться выполнить его с помощью команды java -jar.
Я решил проблему, удалив файл .jar и целевую папку из файла .gitignore.
источник
Вот причина, по которой это происходит: ваш локальный каталог в ОС хоста, где вы запускаете докер, должен иметь файл, иначе вы получите эту ошибку
Одно из решений: использовать
RUN cp <src> <dst>
вместоCOPY <src> <dst>
затем запустите команду, она работает!
источник
Следующая структура в docker-compose.yaml позволит вам иметь файл Dockerfile в подпапке из корня:
version: '3' services: db: image: postgres:11 environment: - PGDATA=/var/lib/postgresql/data/pgdata volumes: - postgres-data:/var/lib/postgresql/data ports: - 127.0.0.1:5432:5432 **web: build: context: ".." dockerfile: dockerfiles/Dockerfile** command: ... ...
Затем в вашем Dockerfile, который находится в том же каталоге, что и docker-compose.yaml, вы можете сделать следующее:
ENV APP_HOME /home RUN mkdir -p ${APP_HOME} # Copy the file to the directory in the container COPY test.json ${APP_HOME}/test.json COPY test.py ${APP_HOME}/test.py # Browse to that directory created above WORKDIR ${APP_HOME}
Затем вы можете запустить docker-compose из родительского каталога, например:
источник
<plugin> <groupId>io.fabric8</groupId> <artifactId>docker-maven-plugin</artifactId> <configuration> <images> <image> <name>imagenam</name> <alias>dockerfile</alias> <build> <!-- filter>@</filter--> <dockerFileDir>dockerfile loaction</dockerFileDir> <tags> <tag>latest</tag> <tag>0.0.1</tag> </tags> </build> <run> <ports> <port>8080:8080</port> </ports> </run> </image> </images> </configuration> </plugin>
источник