#image #docker #makefile #directory #dockerfile
#изображение #docker #makefile #каталог #dockerfile
Вопрос:
Я хочу скомпилировать makefile и переместить полученный скомпилированный файл в другой каталог. Например, если я нахожусь в каталоге:
WORKDIR /Directory1/
И после:
RUN make
Который должен создать скомпилированный файл с именем «abc». Затем я хочу переместить этот файл в другой каталог, который мы будем называть «Directory2». Это то, что я пробовал, но это не сработало:
COPY /Directory1/abc/ /Directory2/
Любой совет?
Комментарии:
1. Во-первых, вы всегда должны точно указывать, что произошло (какие сообщения или ошибки вы получили и т. Д.), А не говорить «это не сработало». Это никому не поможет вам помочь. Во-вторых, есть ли у вас косая черта в конце вашего имени файла, например
/Directory1/abc/
? Если да, то почему? Это заставит команды предполагать, чтоabc
это каталог, а не файл.2. Извините, я новичок в Docker и stackoverflow. Я обязательно сделаю это в следующий раз.
Ответ №1:
В Docker есть концепция слоев.
В dockerfile каждая команда выполняется и создает отдельный слой, поэтому слой, созданный вашей командой make, недоступен для других слоев.
Чтобы заставить его работать, используйте команды make и copy за один запуск. например
RUN cd /Directory1/ amp;amp; make amp;amp; cp abc /Directory2/
Комментарии:
1. (Это будет работать просто отлично, даже если вы
RUN cp
в отдельной команде создаете отдельный слой.)2. Отлично, большое вам спасибо. Это именно то, что я искал.