Да, я дал полный путь, но он все еще показывает ошибку.

я ниже Dockerfile:

FROM python:3

RUN mkdir -p /test/code/
RUN mkdir -p /test/logs/
RUN mkdir -p /test/configs/

ADD test.py /test/code/
ADD test_output.txt /test/code/
ADD test_input.txt /test/configs/
ADD logfile.log /test/logs/


CMD [ "python3", "/test/code/test.py" ]

Моя структура каталогов:

/home/<username>/test/
                 |-> code/Dockerfile, test_output.txt, test.py
                 |-> logs/logfile.log
                 |-> configs/test_input.txt

когда я создаю образ докера с помощью команды ниже:

sudo docker build -t myimage .

Это показывает ниже ошибку:

Step 7/9 : ADD test_input.txt /test/configs/
ADD failed: stat /var/lib/docker/tmp/docker-builder562406652/test_input.txt: no such file or directory

Почему это показывает эту ошибку, когда у меня есть каталог, и мой файл также присутствует.

Ответы на вопрос(2)

Решение Вопроса

test_input.txt не вконтекст сборки докера.

Когда вы выполняете командуsudo docker build -t myimage . последний '.' указывает на контекст сборки. Что делает Docker, так это то, что он загружает контекст в Docker Deamon для создания образа. В вашем случае контекст не содержитtest_input.txt, таким образом, он не загружен и докер не может найти файл /

Есть два способа решить эту проблему:

Внутри тестовой директории выполните командуsudo docker build -t myimage -f code/Dockerfile ., В этом случае контекст включает в себя весь тестовый каталог. Затем измените Dockerfile, чтобы учесть это изменение:
FROM python:3
...    
ADD code/test.py /test/code/
ADD code/test_output.txt /test/code/
ADD config/test_input.txt /test/configs/
ADD logs/logfile.log /test/logs/
Второй вариант - просто переместить файл Docker в тестовую папку и изменить его, как указано выше. В этом случае командаsudo docker build -t myimage . должно сработать.
 Anna Carolina27 дек. 2017 г., 10:49
Superb. Теперь у меня есть четкое представление о докерах.
 yamenk27 дек. 2017 г., 09:04
@AnnaCarolina Для первого варианта. что является аргументом команды сборки, на которую жалуется докер. Исправлено. Что касается второй ошибки, попробуйте просмотреть контейнер, запустивsudo docker run -it myimage bash и перейти к/test/code и убедитесь, что test / py не существует.
 Anna Carolina27 дек. 2017 г., 08:24
Для вашего первого варианта, это дает ошибку при построении этогоit requires exactly 1 argument, Для второго варианта изображение успешно собрано, но когда я запускаю его контейнер, оно говоритpython3: can't open file '/test/code/test.py': [Errno 20] Not a directory

либо поместите этот файл на место, где файл dockerfile похож на test_output.txt, либо укажите полный путь в команде ADD

ADD ../configs/test_input.txt /test/configs/

Даже для logfile.log это вы получите ошибку, поэтому измените на

ADD ../logs/logfile.log /test/logs/
 Anna Carolina26 дек. 2017 г., 12:47
Да, я дал полный путь, но он все еще показывает ошибку.
 Anna Carolina26 дек. 2017 г., 12:44
Под полным путем вы подразумеваете/home/<username>/test/configs/test_input.txt И то же самое для файла журнала.
 sanath meti26 дек. 2017 г., 12:44
да, или просто вернитесь на одну папку с именем ../folder_name

Ваш ответ на вопрос